{"id":21272695,"url":"https://github.com/bb9z/rfkit","last_synced_at":"2025-07-11T06:32:26.624Z","repository":{"id":2135476,"uuid":"3079022","full_name":"BB9z/RFKit","owner":"BB9z","description":"Toolkit for daily Cocoa development. Since 2012.","archived":false,"fork":false,"pushed_at":"2023-09-13T01:21:57.000Z","size":725,"stargazers_count":19,"open_issues_count":0,"forks_count":7,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2024-11-20T06:18:46.455Z","etag":null,"topics":["category","extensions","ios","language-extensions","log","macos","macros","objective-c","toolkit","tvos","uikit","watchos"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"hemanth/has-properties","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BB9z.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-12-31T10:00:11.000Z","updated_at":"2024-07-15T06:42:49.000Z","dependencies_parsed_at":"2022-09-04T18:11:09.027Z","dependency_job_id":null,"html_url":"https://github.com/BB9z/RFKit","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BB9z%2FRFKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BB9z%2FRFKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BB9z%2FRFKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BB9z%2FRFKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BB9z","download_url":"https://codeload.github.com/BB9z/RFKit/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225700964,"owners_count":17510448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["category","extensions","ios","language-extensions","log","macos","macros","objective-c","toolkit","tvos","uikit","watchos"],"created_at":"2024-11-21T09:08:40.334Z","updated_at":"2024-11-21T09:08:41.307Z","avatar_url":"https://github.com/BB9z.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RFKit\n\n[![CocoaPods](https://github.com/BB9z/RFKit/workflows/CocoaPods/badge.svg)](https://github.com/BB9z/RFKit/actions?query=workflow%3ACocoaPods)\n[![Build Status](https://img.shields.io/travis/BB9z/RFKit.svg?style=flat-square\u0026colorA=333333\u0026colorB=6600cc)](https://travis-ci.com/BB9z/RFKit)\n[![Codecov](https://img.shields.io/codecov/c/github/BB9z/RFKit.svg?style=flat-square\u0026colorA=333333\u0026colorB=6600cc)](https://codecov.io/gh/BB9z/RFKit)\n[![CocoaPods](https://img.shields.io/cocoapods/v/RFKit.svg?style=flat-square\u0026colorA=333333\u0026colorB=6600cc)](https://cocoapods.org/pods/RFKit)\n[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-6600cc.svg?style=flat-square\u0026colorA=333333)](https://github.com/Carthage/Carthage)\n\n\u003cbase href=\"//github.com/BB9z/RFKit/blob/master/\" /\u003e\n\n\u003csmall\u003e*English* [简体中文 :cn:](README~zh-hans.md)\u003c/small\u003e\n\nRFKit is a useful toolkit for daily Cocoa development.\n\n## Requirements\n\n| RFKit Version | Minimum Xcode Version | Minimum iOS Target  | Minimum macOS Target | Minimum watchOS Target | Minimum tvOS Target |\n|:-------------:|:---------------------:|:-------------------:|:--------------------:|:----------------------:|:-------------------:|\n| 2.5+            | Xcode 9               | iOS 9  | macOS 10.9  | watchOS 2.0 | tvOS 9.0 |\n| 2.4             | Xcode 8               | iOS 8  | macOS 10.8  | watchOS 2.0 | tvOS 9.0 |\n| 2.0-2.3       | Xcode 8               | iOS 6  | macOS 10.8  | watchOS 2.0 | tvOS 9.0 |\n| 1.7             | Xcode 7               | iOS 6  | macOS 10.8  | watchOS 2.0 | tvOS 9.0 |\n| 1.6             | Xcode 8               | iOS 6  | N/A         | watchOS 2.0 | N/A      |\n\n## Install\n\n### CocoaPods\n\nTo install using CocoaPods, add the following to your project Podfile:\n\n```ruby\npod 'RFKit'\n```\n\nSpecify develop branch to install the lastest version:\n\n```ruby\npod 'RFKit', :git =\u003e 'https://github.com/BB9z/RFKit.git', :branch =\u003e 'develop'\n```\n\nA more complex sample:\n\n```ruby\npod 'RFKit',\n    :git =\u003e 'https://github.com/BB9z/RFKit.git',\n    :subspecs =\u003e ['Default', 'Category/NSDateFormatter']\n```\n\n### Carthage\n\nAlthough I recommend using CocoaPods, Carthage is still supported.\n\nSpecify RFKit in your Cartfile:\n\n```text\ngithub \"BB9z/RFKit\"\n```\n\n### Manual\n\nYou can always import RFKit by adding source code into your project. Just copy any files you needs.\n\n## dout\n\ndout contains a set of convenient log toolcha, which was designed for debugging.\n\nFeatures:\n\n* Out out format is better than NSLog(), and more faster.\n* Auto add expression before the results.\n\n  e.g.:\n\n  ```c\n  int a = 10;\n  dout_int(101+a)  // Output: 101+a = 111\n  ```\n\n* Optimized for multiple threads debugging, you can easily find the output come from which thread.\n* Support add position information in log output to help tracking location of log statements. Set `DOUT_FALG_TRACE` as `1` to active. \n* Special log methods for warning and error. Can change theirs behave to throw exception or assert fail.\n* Behavior can be highly customizable through the switch.\n* As macro, usually no performance loss.\n\nDetails: [dout Document(in Chinese)](https://github.com/BB9z/RFKit/wiki/dout)\n\n## RFRuntime\n\nHandle build or runtime differences. Provides an unified and simple interface for upper components. Contains：debugging switch define, default header file, RFARC and language extensions.\n\n### Debugging switch\n\n`RFDEBUG`, RFKit debug mode switch. Set as `1` to active. If it´s not defined, will defined as `1` when `DEBUG` is true and `NDEBUG` not defined.\n\n`RFDebugLevel`, controlling debugging behavior. If it´s not defined, will be defined as `2` if `RFDEBUG` is true, otherwise `1`.\n\n### Default header file\n\nUIKit and Foundation header is included in RFRuntime by default.\n\n### RFFeatureSupport\n\nDefined some fake protocols for declaring a class support something or not.\n\n### RFDispatch\n\nSome helper function for GCD.\n\n### Language extensions\n\nInclude some components from [libextobjc](https://github.com/jspahrsummers/libextobjc):\n\n* metamacros.h, macros for metaprogramming.\n* EXTKeyPathCoding, allows compile-time verification of key paths.\n* EXTScope, several tools relative to scope.\n\n@keypathClassInstance is similar with @keypath, but accept a class as parameter instead of a instance variable.\n\n## UIKit \u0026 Foundation Categories\n\nImportant part of RFKit. They contains many useful methods.\n\n`RFKitDefaultCategories.h` defends which extension is imported by default.\n\nSee each header file to know the specific features.\n\n## RFGeometry\n\nAdd new methods and constants for geometry structures: `CGPoint`, `CGSize`, `CGRect`. Add an new `CGAngle` angle structure.\n\n`RFResizeAnchor` and `RFAlignmentAnchor` provides a reference for resizing and aligning.\n\n## RFPerformance \u0026 doutkit\n\nPerformance toolkit.\n\n## Others\n\nSome external components were placed under `external` folder.\n\n[Change log](https://github.com/BB9z/RFKit/releases)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbb9z%2Frfkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbb9z%2Frfkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbb9z%2Frfkit/lists"}