├── Podfile ├── Podfile.lock ├── Pods ├── CocoaAsyncSocket │ ├── LICENSE.txt │ ├── README.markdown │ └── Source │ │ └── GCD │ │ ├── GCDAsyncSocket.h │ │ ├── GCDAsyncSocket.m │ │ ├── GCDAsyncUdpSocket.h │ │ └── GCDAsyncUdpSocket.m ├── Headers │ ├── Private │ │ ├── CocoaAsyncSocket │ │ │ ├── GCDAsyncSocket.h │ │ │ └── GCDAsyncUdpSocket.h │ │ ├── MJExtension │ │ │ ├── MJExtension.h │ │ │ ├── MJExtensionConst.h │ │ │ ├── MJFoundation.h │ │ │ ├── MJProperty.h │ │ │ ├── MJPropertyKey.h │ │ │ ├── MJPropertyType.h │ │ │ ├── NSObject+MJClass.h │ │ │ ├── NSObject+MJCoding.h │ │ │ ├── NSObject+MJKeyValue.h │ │ │ ├── NSObject+MJProperty.h │ │ │ └── NSString+MJExtension.h │ │ ├── MJRefresh │ │ │ ├── MJRefresh.h │ │ │ ├── MJRefreshAutoFooter.h │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ ├── MJRefreshBackFooter.h │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshConst.h │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshGifHeader.h │ │ │ ├── MJRefreshHeader.h │ │ │ ├── MJRefreshNormalHeader.h │ │ │ ├── MJRefreshStateHeader.h │ │ │ ├── NSBundle+MJRefresh.h │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ └── UIView+MJExtension.h │ │ ├── Realm │ │ │ ├── NSError+RLMSync.h │ │ │ ├── RLMAccessor.h │ │ │ ├── RLMArray.h │ │ │ ├── RLMArray_Private.h │ │ │ ├── RLMCollection.h │ │ │ ├── RLMConstants.h │ │ │ ├── RLMListBase.h │ │ │ ├── RLMMigration.h │ │ │ ├── RLMMigration_Private.h │ │ │ ├── RLMObject.h │ │ │ ├── RLMObjectBase.h │ │ │ ├── RLMObjectBase_Dynamic.h │ │ │ ├── RLMObjectSchema.h │ │ │ ├── RLMObjectSchema_Private.h │ │ │ ├── RLMObjectStore.h │ │ │ ├── RLMObject_Private.h │ │ │ ├── RLMOptionalBase.h │ │ │ ├── RLMPlatform.h │ │ │ ├── RLMProperty.h │ │ │ ├── RLMProperty_Private.h │ │ │ ├── RLMRealm.h │ │ │ ├── RLMRealmConfiguration+Sync.h │ │ │ ├── RLMRealmConfiguration.h │ │ │ ├── RLMRealmConfiguration_Private.h │ │ │ ├── RLMRealm_Dynamic.h │ │ │ ├── RLMRealm_Private.h │ │ │ ├── RLMResults.h │ │ │ ├── RLMResults_Private.h │ │ │ ├── RLMSchema.h │ │ │ ├── RLMSchema_Private.h │ │ │ ├── RLMSyncConfiguration.h │ │ │ ├── RLMSyncConfiguration_Private.h │ │ │ ├── RLMSyncCredentials.h │ │ │ ├── RLMSyncManager.h │ │ │ ├── RLMSyncManager_Private.h │ │ │ ├── RLMSyncPermission.h │ │ │ ├── RLMSyncPermissionChange.h │ │ │ ├── RLMSyncPermissionChange_Private.h │ │ │ ├── RLMSyncPermissionOffer.h │ │ │ ├── RLMSyncPermissionOfferResponse.h │ │ │ ├── RLMSyncPermissionOfferResponse_Private.h │ │ │ ├── RLMSyncPermissionOffer_Private.h │ │ │ ├── RLMSyncPermissionResults.h │ │ │ ├── RLMSyncPermissionValue.h │ │ │ ├── RLMSyncPermission_Private.h │ │ │ ├── RLMSyncSession.h │ │ │ ├── RLMSyncUser.h │ │ │ ├── RLMSyncUtil.h │ │ │ ├── RLMSyncUtil_Private.h │ │ │ ├── RLMThreadSafeReference.h │ │ │ └── Realm.h │ │ ├── SDAutoLayout │ │ │ ├── SDAutoLayout.h │ │ │ ├── UITableView+SDAutoTableViewCellHeight.h │ │ │ └── UIView+SDAutoLayout.h │ │ └── SDWebImage │ │ │ ├── NSButton+WebCache.h │ │ │ ├── NSData+ImageContentType.h │ │ │ ├── NSImage+WebCache.h │ │ │ ├── SDImageCache.h │ │ │ ├── SDImageCacheConfig.h │ │ │ ├── SDWebImageCoder.h │ │ │ ├── SDWebImageCoderHelper.h │ │ │ ├── SDWebImageCodersManager.h │ │ │ ├── SDWebImageCompat.h │ │ │ ├── SDWebImageDownloader.h │ │ │ ├── SDWebImageDownloaderOperation.h │ │ │ ├── SDWebImageFrame.h │ │ │ ├── SDWebImageGIFCoder.h │ │ │ ├── SDWebImageImageIOCoder.h │ │ │ ├── SDWebImageManager.h │ │ │ ├── SDWebImageOperation.h │ │ │ ├── SDWebImagePrefetcher.h │ │ │ ├── SDWebImageTransition.h │ │ │ ├── UIButton+WebCache.h │ │ │ ├── UIImage+ForceDecode.h │ │ │ ├── UIImage+GIF.h │ │ │ ├── UIImage+MultiFormat.h │ │ │ ├── UIImageView+HighlightedWebCache.h │ │ │ ├── UIImageView+WebCache.h │ │ │ ├── UIView+WebCache.h │ │ │ └── UIView+WebCacheOperation.h │ └── Public │ │ ├── CocoaAsyncSocket │ │ ├── GCDAsyncSocket.h │ │ └── GCDAsyncUdpSocket.h │ │ ├── MJExtension │ │ ├── MJExtension.h │ │ ├── MJExtensionConst.h │ │ ├── MJFoundation.h │ │ ├── MJProperty.h │ │ ├── MJPropertyKey.h │ │ ├── MJPropertyType.h │ │ ├── NSObject+MJClass.h │ │ ├── NSObject+MJCoding.h │ │ ├── NSObject+MJKeyValue.h │ │ ├── NSObject+MJProperty.h │ │ └── NSString+MJExtension.h │ │ ├── MJRefresh │ │ ├── MJRefresh.h │ │ ├── MJRefreshAutoFooter.h │ │ ├── MJRefreshAutoGifFooter.h │ │ ├── MJRefreshAutoNormalFooter.h │ │ ├── MJRefreshAutoStateFooter.h │ │ ├── MJRefreshBackFooter.h │ │ ├── MJRefreshBackGifFooter.h │ │ ├── MJRefreshBackNormalFooter.h │ │ ├── MJRefreshBackStateFooter.h │ │ ├── MJRefreshComponent.h │ │ ├── MJRefreshConst.h │ │ ├── MJRefreshFooter.h │ │ ├── MJRefreshGifHeader.h │ │ ├── MJRefreshHeader.h │ │ ├── MJRefreshNormalHeader.h │ │ ├── MJRefreshStateHeader.h │ │ ├── NSBundle+MJRefresh.h │ │ ├── UIScrollView+MJExtension.h │ │ ├── UIScrollView+MJRefresh.h │ │ └── UIView+MJExtension.h │ │ ├── Realm │ │ ├── NSError+RLMSync.h │ │ ├── RLMArray.h │ │ ├── RLMCollection.h │ │ ├── RLMConstants.h │ │ ├── RLMListBase.h │ │ ├── RLMMigration.h │ │ ├── RLMObject.h │ │ ├── RLMObjectBase.h │ │ ├── RLMObjectBase_Dynamic.h │ │ ├── RLMObjectSchema.h │ │ ├── RLMOptionalBase.h │ │ ├── RLMPlatform.h │ │ ├── RLMProperty.h │ │ ├── RLMRealm.h │ │ ├── RLMRealmConfiguration+Sync.h │ │ ├── RLMRealmConfiguration.h │ │ ├── RLMRealm_Dynamic.h │ │ ├── RLMResults.h │ │ ├── RLMSchema.h │ │ ├── RLMSyncConfiguration.h │ │ ├── RLMSyncCredentials.h │ │ ├── RLMSyncManager.h │ │ ├── RLMSyncPermission.h │ │ ├── RLMSyncPermissionChange.h │ │ ├── RLMSyncPermissionOffer.h │ │ ├── RLMSyncPermissionOfferResponse.h │ │ ├── RLMSyncPermissionResults.h │ │ ├── RLMSyncPermissionValue.h │ │ ├── RLMSyncSession.h │ │ ├── RLMSyncUser.h │ │ ├── RLMSyncUtil.h │ │ ├── RLMThreadSafeReference.h │ │ └── Realm.h │ │ ├── SDAutoLayout │ │ ├── SDAutoLayout.h │ │ ├── UITableView+SDAutoTableViewCellHeight.h │ │ └── UIView+SDAutoLayout.h │ │ └── SDWebImage │ │ ├── NSButton+WebCache.h │ │ ├── NSData+ImageContentType.h │ │ ├── NSImage+WebCache.h │ │ ├── SDImageCache.h │ │ ├── SDImageCacheConfig.h │ │ ├── SDWebImageCoder.h │ │ ├── SDWebImageCoderHelper.h │ │ ├── SDWebImageCodersManager.h │ │ ├── SDWebImageCompat.h │ │ ├── SDWebImageDownloader.h │ │ ├── SDWebImageDownloaderOperation.h │ │ ├── SDWebImageFrame.h │ │ ├── SDWebImageGIFCoder.h │ │ ├── SDWebImageImageIOCoder.h │ │ ├── SDWebImageManager.h │ │ ├── SDWebImageOperation.h │ │ ├── SDWebImagePrefetcher.h │ │ ├── SDWebImageTransition.h │ │ ├── UIButton+WebCache.h │ │ ├── UIImage+ForceDecode.h │ │ ├── UIImage+GIF.h │ │ ├── UIImage+MultiFormat.h │ │ ├── UIImageView+HighlightedWebCache.h │ │ ├── UIImageView+WebCache.h │ │ ├── UIView+WebCache.h │ │ └── UIView+WebCacheOperation.h ├── MJExtension │ ├── LICENSE │ ├── MJExtension │ │ ├── MJExtension.h │ │ ├── MJExtensionConst.h │ │ ├── MJExtensionConst.m │ │ ├── MJFoundation.h │ │ ├── MJFoundation.m │ │ ├── MJProperty.h │ │ ├── MJProperty.m │ │ ├── MJPropertyKey.h │ │ ├── MJPropertyKey.m │ │ ├── MJPropertyType.h │ │ ├── MJPropertyType.m │ │ ├── NSObject+MJClass.h │ │ ├── NSObject+MJClass.m │ │ ├── NSObject+MJCoding.h │ │ ├── NSObject+MJCoding.m │ │ ├── NSObject+MJKeyValue.h │ │ ├── NSObject+MJKeyValue.m │ │ ├── NSObject+MJProperty.h │ │ ├── NSObject+MJProperty.m │ │ ├── NSString+MJExtension.h │ │ └── NSString+MJExtension.m │ └── README.md ├── MJRefresh │ ├── LICENSE │ ├── MJRefresh │ │ ├── Base │ │ │ ├── MJRefreshAutoFooter.h │ │ │ ├── MJRefreshAutoFooter.m │ │ │ ├── MJRefreshBackFooter.h │ │ │ ├── MJRefreshBackFooter.m │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshComponent.m │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshFooter.m │ │ │ ├── MJRefreshHeader.h │ │ │ └── MJRefreshHeader.m │ │ ├── Custom │ │ │ ├── Footer │ │ │ │ ├── Auto │ │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ │ ├── MJRefreshAutoGifFooter.m │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ │ ├── MJRefreshAutoNormalFooter.m │ │ │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ │ │ └── MJRefreshAutoStateFooter.m │ │ │ │ └── Back │ │ │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ │ │ ├── MJRefreshBackGifFooter.m │ │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ │ ├── MJRefreshBackNormalFooter.m │ │ │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ │ │ └── MJRefreshBackStateFooter.m │ │ │ └── Header │ │ │ │ ├── MJRefreshGifHeader.h │ │ │ │ ├── MJRefreshGifHeader.m │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ ├── MJRefreshNormalHeader.m │ │ │ │ ├── MJRefreshStateHeader.h │ │ │ │ └── MJRefreshStateHeader.m │ │ ├── MJRefresh.bundle │ │ │ ├── arrow@2x.png │ │ │ ├── en.lproj │ │ │ │ └── Localizable.strings │ │ │ ├── zh-Hans.lproj │ │ │ │ └── Localizable.strings │ │ │ └── zh-Hant.lproj │ │ │ │ └── Localizable.strings │ │ ├── MJRefresh.h │ │ ├── MJRefreshConst.h │ │ ├── MJRefreshConst.m │ │ ├── NSBundle+MJRefresh.h │ │ ├── NSBundle+MJRefresh.m │ │ ├── UIScrollView+MJExtension.h │ │ ├── UIScrollView+MJExtension.m │ │ ├── UIScrollView+MJRefresh.h │ │ ├── UIScrollView+MJRefresh.m │ │ ├── UIView+MJExtension.h │ │ └── UIView+MJExtension.m │ └── README.md ├── Manifest.lock ├── Pods.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ ├── mac.xcuserdatad │ │ └── xcschemes │ │ │ ├── CocoaAsyncSocket.xcscheme │ │ │ ├── MJExtension.xcscheme │ │ │ ├── MJRefresh.xcscheme │ │ │ ├── Pods-SocketIMDemo.xcscheme │ │ │ ├── Realm.xcscheme │ │ │ ├── SDAutoLayout.xcscheme │ │ │ ├── SDWebImage.xcscheme │ │ │ └── xcschememanagement.plist │ │ └── zhaolongjie.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── Realm │ ├── LICENSE │ ├── README.md │ ├── Realm │ │ ├── NSError+RLMSync.m │ │ ├── ObjectStore │ │ │ └── src │ │ │ │ ├── binding_callback_thread_observer.cpp │ │ │ │ ├── collection_notifications.cpp │ │ │ │ ├── impl │ │ │ │ ├── apple │ │ │ │ │ ├── external_commit_helper.cpp │ │ │ │ │ └── keychain_helper.cpp │ │ │ │ ├── collection_change_builder.cpp │ │ │ │ ├── collection_notifier.cpp │ │ │ │ ├── list_notifier.cpp │ │ │ │ ├── object_notifier.cpp │ │ │ │ ├── realm_coordinator.cpp │ │ │ │ ├── results_notifier.cpp │ │ │ │ ├── transact_log_handler.cpp │ │ │ │ └── weak_realm_notifier.cpp │ │ │ │ ├── index_set.cpp │ │ │ │ ├── list.cpp │ │ │ │ ├── object.cpp │ │ │ │ ├── object_schema.cpp │ │ │ │ ├── object_store.cpp │ │ │ │ ├── placeholder.cpp │ │ │ │ ├── results.cpp │ │ │ │ ├── schema.cpp │ │ │ │ ├── shared_realm.cpp │ │ │ │ ├── sync │ │ │ │ ├── impl │ │ │ │ │ ├── apple │ │ │ │ │ │ ├── network_reachability_observer.cpp │ │ │ │ │ │ └── system_configuration.cpp │ │ │ │ │ ├── sync_file.cpp │ │ │ │ │ └── sync_metadata.cpp │ │ │ │ ├── sync_manager.cpp │ │ │ │ ├── sync_permission.cpp │ │ │ │ ├── sync_session.cpp │ │ │ │ └── sync_user.cpp │ │ │ │ ├── thread_safe_reference.cpp │ │ │ │ └── util │ │ │ │ ├── format.cpp │ │ │ │ └── uuid.cpp │ │ ├── RLMAccessor.mm │ │ ├── RLMAnalytics.mm │ │ ├── RLMArray.mm │ │ ├── RLMArrayLinkView.mm │ │ ├── RLMAuthResponseModel.m │ │ ├── RLMClassInfo.mm │ │ ├── RLMCollection.mm │ │ ├── RLMConstants.m │ │ ├── RLMListBase.mm │ │ ├── RLMMigration.mm │ │ ├── RLMNetworkClient.mm │ │ ├── RLMObject.mm │ │ ├── RLMObjectBase.mm │ │ ├── RLMObjectSchema.mm │ │ ├── RLMObjectStore.mm │ │ ├── RLMObservation.mm │ │ ├── RLMOptionalBase.mm │ │ ├── RLMPredicateUtil.mm │ │ ├── RLMProperty.mm │ │ ├── RLMQueryUtil.mm │ │ ├── RLMRealm.mm │ │ ├── RLMRealmConfiguration+Sync.mm │ │ ├── RLMRealmConfiguration.mm │ │ ├── RLMRealmUtil.mm │ │ ├── RLMResults.mm │ │ ├── RLMSchema.mm │ │ ├── RLMSwiftSupport.m │ │ ├── RLMSyncConfiguration.mm │ │ ├── RLMSyncCredentials.m │ │ ├── RLMSyncErrorResponseModel.m │ │ ├── RLMSyncManager.mm │ │ ├── RLMSyncPermission.m │ │ ├── RLMSyncPermissionChange.m │ │ ├── RLMSyncPermissionOffer.m │ │ ├── RLMSyncPermissionOfferResponse.m │ │ ├── RLMSyncPermissionResults.mm │ │ ├── RLMSyncPermissionValue.mm │ │ ├── RLMSyncSession.mm │ │ ├── RLMSyncSessionRefreshHandle.mm │ │ ├── RLMSyncUser.mm │ │ ├── RLMSyncUtil.mm │ │ ├── RLMThreadSafeReference.mm │ │ ├── RLMTokenModels.m │ │ ├── RLMUpdateChecker.mm │ │ ├── RLMUtil.mm │ │ └── Realm.modulemap │ ├── build.sh │ ├── core │ │ └── librealmcore-ios.a │ └── include │ │ ├── NSError+RLMSync.h │ │ ├── RLMAccessor.h │ │ ├── RLMAccessor.hpp │ │ ├── RLMAnalytics.hpp │ │ ├── RLMArray.h │ │ ├── RLMArray_Private.h │ │ ├── RLMArray_Private.hpp │ │ ├── RLMAuthResponseModel.h │ │ ├── RLMClassInfo.hpp │ │ ├── RLMCollection.h │ │ ├── RLMCollection_Private.hpp │ │ ├── RLMConstants.h │ │ ├── RLMListBase.h │ │ ├── RLMMigration.h │ │ ├── RLMMigration_Private.h │ │ ├── RLMNetworkClient.h │ │ ├── RLMObject.h │ │ ├── RLMObjectBase.h │ │ ├── RLMObjectBase_Dynamic.h │ │ ├── RLMObjectSchema.h │ │ ├── RLMObjectSchema_Private.h │ │ ├── RLMObjectSchema_Private.hpp │ │ ├── RLMObjectStore.h │ │ ├── RLMObject_Private.h │ │ ├── RLMObject_Private.hpp │ │ ├── RLMObservation.hpp │ │ ├── RLMOptionalBase.h │ │ ├── RLMPlatform.h │ │ ├── RLMPredicateUtil.hpp │ │ ├── RLMPrefix.h │ │ ├── RLMProperty.h │ │ ├── RLMProperty_Private.h │ │ ├── RLMProperty_Private.hpp │ │ ├── RLMQueryUtil.hpp │ │ ├── RLMRealm.h │ │ ├── RLMRealmConfiguration+Sync.h │ │ ├── RLMRealmConfiguration.h │ │ ├── RLMRealmConfiguration_Private.h │ │ ├── RLMRealmConfiguration_Private.hpp │ │ ├── RLMRealmUtil.hpp │ │ ├── RLMRealm_Dynamic.h │ │ ├── RLMRealm_Private.h │ │ ├── RLMRealm_Private.hpp │ │ ├── RLMResults.h │ │ ├── RLMResults_Private.h │ │ ├── RLMSchema.h │ │ ├── RLMSchema_Private.h │ │ ├── RLMSchema_Private.hpp │ │ ├── RLMSwiftBridgingHeader.h │ │ ├── RLMSwiftSupport.h │ │ ├── RLMSyncConfiguration.h │ │ ├── RLMSyncConfiguration_Private.h │ │ ├── RLMSyncConfiguration_Private.hpp │ │ ├── RLMSyncCredentials.h │ │ ├── RLMSyncErrorResponseModel.h │ │ ├── RLMSyncManager.h │ │ ├── RLMSyncManager_Private.h │ │ ├── RLMSyncPermission.h │ │ ├── RLMSyncPermissionChange.h │ │ ├── RLMSyncPermissionChange_Private.h │ │ ├── RLMSyncPermissionOffer.h │ │ ├── RLMSyncPermissionOfferResponse.h │ │ ├── RLMSyncPermissionOfferResponse_Private.h │ │ ├── RLMSyncPermissionOffer_Private.h │ │ ├── RLMSyncPermissionResults.h │ │ ├── RLMSyncPermissionResults_Private.hpp │ │ ├── RLMSyncPermissionValue.h │ │ ├── RLMSyncPermissionValue_Private.hpp │ │ ├── RLMSyncPermission_Private.h │ │ ├── RLMSyncSession.h │ │ ├── RLMSyncSessionRefreshHandle.h │ │ ├── RLMSyncSessionRefreshHandle.hpp │ │ ├── RLMSyncSession_Private.hpp │ │ ├── RLMSyncUser.h │ │ ├── RLMSyncUser_Private.hpp │ │ ├── RLMSyncUtil.h │ │ ├── RLMSyncUtil_Private.h │ │ ├── RLMSyncUtil_Private.hpp │ │ ├── RLMThreadSafeReference.h │ │ ├── RLMThreadSafeReference_Private.hpp │ │ ├── RLMTokenModels.h │ │ ├── RLMUpdateChecker.hpp │ │ ├── RLMUtil.hpp │ │ ├── Realm.h │ │ ├── binding_callback_thread_observer.hpp │ │ ├── binding_context.hpp │ │ ├── collection_notifications.hpp │ │ ├── core │ │ ├── realm.hpp │ │ └── realm │ │ │ ├── alloc.hpp │ │ │ ├── alloc_slab.hpp │ │ │ ├── array.hpp │ │ │ ├── array_basic.hpp │ │ │ ├── array_basic_tpl.hpp │ │ │ ├── array_binary.hpp │ │ │ ├── array_blob.hpp │ │ │ ├── array_blobs_big.hpp │ │ │ ├── array_direct.hpp │ │ │ ├── array_integer.hpp │ │ │ ├── array_string.hpp │ │ │ ├── array_string_long.hpp │ │ │ ├── binary_data.hpp │ │ │ ├── bptree.hpp │ │ │ ├── column.hpp │ │ │ ├── column_backlink.hpp │ │ │ ├── column_binary.hpp │ │ │ ├── column_fwd.hpp │ │ │ ├── column_link.hpp │ │ │ ├── column_linkbase.hpp │ │ │ ├── column_linklist.hpp │ │ │ ├── column_mixed.hpp │ │ │ ├── column_mixed_tpl.hpp │ │ │ ├── column_string.hpp │ │ │ ├── column_string_enum.hpp │ │ │ ├── column_table.hpp │ │ │ ├── column_timestamp.hpp │ │ │ ├── column_tpl.hpp │ │ │ ├── column_type.hpp │ │ │ ├── column_type_traits.hpp │ │ │ ├── data_type.hpp │ │ │ ├── descriptor.hpp │ │ │ ├── descriptor_fwd.hpp │ │ │ ├── disable_sync_to_disk.hpp │ │ │ ├── exceptions.hpp │ │ │ ├── group.hpp │ │ │ ├── group_shared.hpp │ │ │ ├── group_shared_options.hpp │ │ │ ├── group_writer.hpp │ │ │ ├── handover_defs.hpp │ │ │ ├── history.hpp │ │ │ ├── impl │ │ │ ├── array_writer.hpp │ │ │ ├── continuous_transactions_history.hpp │ │ │ ├── destroy_guard.hpp │ │ │ ├── input_stream.hpp │ │ │ ├── instructions.hpp │ │ │ ├── output_stream.hpp │ │ │ ├── sequential_getter.hpp │ │ │ ├── simulated_failure.hpp │ │ │ ├── table_path.hpp │ │ │ └── transact_log.hpp │ │ │ ├── importer.hpp │ │ │ ├── index_string.hpp │ │ │ ├── lang_bind_helper.hpp │ │ │ ├── link_view.hpp │ │ │ ├── link_view_fwd.hpp │ │ │ ├── mixed.hpp │ │ │ ├── null.hpp │ │ │ ├── olddatetime.hpp │ │ │ ├── owned_data.hpp │ │ │ ├── query.hpp │ │ │ ├── query_conditions.hpp │ │ │ ├── query_engine.hpp │ │ │ ├── query_expression.hpp │ │ │ ├── query_operators.hpp │ │ │ ├── realm_nmmintrin.h │ │ │ ├── replication.hpp │ │ │ ├── row.hpp │ │ │ ├── spec.hpp │ │ │ ├── string_data.hpp │ │ │ ├── sync │ │ │ ├── changeset_cooker.hpp │ │ │ ├── client.hpp │ │ │ ├── crypto.hpp │ │ │ ├── crypto_server.hpp │ │ │ ├── history.hpp │ │ │ ├── metrics.hpp │ │ │ ├── protocol.hpp │ │ │ ├── server.hpp │ │ │ ├── server_configuration.hpp │ │ │ ├── transform.hpp │ │ │ └── version.hpp │ │ │ ├── table.hpp │ │ │ ├── table_ref.hpp │ │ │ ├── table_view.hpp │ │ │ ├── timestamp.hpp │ │ │ ├── unicode.hpp │ │ │ ├── util │ │ │ ├── assert.hpp │ │ │ ├── base64.hpp │ │ │ ├── basic_system_errors.hpp │ │ │ ├── bind_ptr.hpp │ │ │ ├── buffer.hpp │ │ │ ├── buffer_stream.hpp │ │ │ ├── call_with_tuple.hpp │ │ │ ├── cf_ptr.hpp │ │ │ ├── compression.hpp │ │ │ ├── config.h │ │ │ ├── encrypted_file_mapping.hpp │ │ │ ├── features.h │ │ │ ├── file.hpp │ │ │ ├── file_mapper.hpp │ │ │ ├── hex_dump.hpp │ │ │ ├── http.hpp │ │ │ ├── inspect.hpp │ │ │ ├── interprocess_condvar.hpp │ │ │ ├── interprocess_mutex.hpp │ │ │ ├── json_parser.hpp │ │ │ ├── logger.hpp │ │ │ ├── memory_stream.hpp │ │ │ ├── misc_errors.hpp │ │ │ ├── miscellaneous.hpp │ │ │ ├── network.hpp │ │ │ ├── network_ssl.hpp │ │ │ ├── optional.hpp │ │ │ ├── overload.hpp │ │ │ ├── priority_queue.hpp │ │ │ ├── random.hpp │ │ │ ├── safe_int_ops.hpp │ │ │ ├── scope_exit.hpp │ │ │ ├── shared_ptr.hpp │ │ │ ├── string_buffer.hpp │ │ │ ├── terminate.hpp │ │ │ ├── thread.hpp │ │ │ ├── time.hpp │ │ │ ├── to_string.hpp │ │ │ ├── type_list.hpp │ │ │ ├── type_traits.hpp │ │ │ ├── uri.hpp │ │ │ ├── utf8.hpp │ │ │ └── websocket.hpp │ │ │ ├── utilities.hpp │ │ │ ├── version.hpp │ │ │ ├── version_id.hpp │ │ │ └── views.hpp │ │ ├── execution_context_id.hpp │ │ ├── impl │ │ ├── apple │ │ │ ├── external_commit_helper.hpp │ │ │ └── keychain_helper.hpp │ │ ├── collection_change_builder.hpp │ │ ├── collection_notifier.hpp │ │ ├── external_commit_helper.hpp │ │ ├── list_notifier.hpp │ │ ├── object_accessor_impl.hpp │ │ ├── object_notifier.hpp │ │ ├── realm_coordinator.hpp │ │ ├── results_notifier.hpp │ │ ├── transact_log_handler.hpp │ │ └── weak_realm_notifier.hpp │ │ ├── index_set.hpp │ │ ├── list.hpp │ │ ├── object.hpp │ │ ├── object_accessor.hpp │ │ ├── object_schema.hpp │ │ ├── object_store.hpp │ │ ├── property.hpp │ │ ├── results.hpp │ │ ├── schema.hpp │ │ ├── shared_realm.hpp │ │ ├── sync │ │ ├── impl │ │ │ ├── apple │ │ │ │ ├── network_reachability_observer.hpp │ │ │ │ └── system_configuration.hpp │ │ │ ├── network_reachability.hpp │ │ │ ├── sync_client.hpp │ │ │ ├── sync_file.hpp │ │ │ └── sync_metadata.hpp │ │ ├── sync_config.hpp │ │ ├── sync_manager.hpp │ │ ├── sync_permission.hpp │ │ ├── sync_session.hpp │ │ └── sync_user.hpp │ │ ├── thread_safe_reference.hpp │ │ └── util │ │ ├── aligned_union.hpp │ │ ├── any.hpp │ │ ├── apple │ │ └── event_loop_signal.hpp │ │ ├── atomic_shared_ptr.hpp │ │ ├── compiler.hpp │ │ ├── event_loop_signal.hpp │ │ ├── format.hpp │ │ ├── time.hpp │ │ └── uuid.hpp ├── SDAutoLayout │ ├── LICENSE │ ├── README.md │ └── SDAutoLayoutDemo │ │ └── SDAutoLayout │ │ ├── SDAutoLayout.h │ │ ├── UITableView+SDAutoTableViewCellHeight.h │ │ ├── UITableView+SDAutoTableViewCellHeight.m │ │ ├── UIView+SDAutoLayout.h │ │ └── UIView+SDAutoLayout.m ├── SDWebImage │ ├── LICENSE │ ├── README.md │ └── SDWebImage │ │ ├── NSButton+WebCache.h │ │ ├── NSButton+WebCache.m │ │ ├── NSData+ImageContentType.h │ │ ├── NSData+ImageContentType.m │ │ ├── NSImage+WebCache.h │ │ ├── NSImage+WebCache.m │ │ ├── SDImageCache.h │ │ ├── SDImageCache.m │ │ ├── SDImageCacheConfig.h │ │ ├── SDImageCacheConfig.m │ │ ├── SDWebImageCoder.h │ │ ├── SDWebImageCoder.m │ │ ├── SDWebImageCoderHelper.h │ │ ├── SDWebImageCoderHelper.m │ │ ├── SDWebImageCodersManager.h │ │ ├── SDWebImageCodersManager.m │ │ ├── SDWebImageCompat.h │ │ ├── SDWebImageCompat.m │ │ ├── SDWebImageDownloader.h │ │ ├── SDWebImageDownloader.m │ │ ├── SDWebImageDownloaderOperation.h │ │ ├── SDWebImageDownloaderOperation.m │ │ ├── SDWebImageFrame.h │ │ ├── SDWebImageFrame.m │ │ ├── SDWebImageGIFCoder.h │ │ ├── SDWebImageGIFCoder.m │ │ ├── SDWebImageImageIOCoder.h │ │ ├── SDWebImageImageIOCoder.m │ │ ├── SDWebImageManager.h │ │ ├── SDWebImageManager.m │ │ ├── SDWebImageOperation.h │ │ ├── SDWebImagePrefetcher.h │ │ ├── SDWebImagePrefetcher.m │ │ ├── SDWebImageTransition.h │ │ ├── SDWebImageTransition.m │ │ ├── UIButton+WebCache.h │ │ ├── UIButton+WebCache.m │ │ ├── UIImage+ForceDecode.h │ │ ├── UIImage+ForceDecode.m │ │ ├── UIImage+GIF.h │ │ ├── UIImage+GIF.m │ │ ├── UIImage+MultiFormat.h │ │ ├── UIImage+MultiFormat.m │ │ ├── UIImageView+HighlightedWebCache.h │ │ ├── UIImageView+HighlightedWebCache.m │ │ ├── UIImageView+WebCache.h │ │ ├── UIImageView+WebCache.m │ │ ├── UIView+WebCache.h │ │ ├── UIView+WebCache.m │ │ ├── UIView+WebCacheOperation.h │ │ └── UIView+WebCacheOperation.m └── Target Support Files │ ├── CocoaAsyncSocket │ ├── CocoaAsyncSocket-dummy.m │ ├── CocoaAsyncSocket-prefix.pch │ └── CocoaAsyncSocket.xcconfig │ ├── MJExtension │ ├── MJExtension-dummy.m │ ├── MJExtension-prefix.pch │ └── MJExtension.xcconfig │ ├── MJRefresh │ ├── MJRefresh-dummy.m │ ├── MJRefresh-prefix.pch │ └── MJRefresh.xcconfig │ ├── Pods-SocketIMDemo │ ├── Pods-SocketIMDemo-acknowledgements.markdown │ ├── Pods-SocketIMDemo-acknowledgements.plist │ ├── Pods-SocketIMDemo-dummy.m │ ├── Pods-SocketIMDemo-frameworks.sh │ ├── Pods-SocketIMDemo-resources.sh │ ├── Pods-SocketIMDemo.debug.xcconfig │ └── Pods-SocketIMDemo.release.xcconfig │ ├── Realm │ ├── Realm-dummy.m │ ├── Realm-prefix.pch │ └── Realm.xcconfig │ ├── SDAutoLayout │ ├── SDAutoLayout-dummy.m │ ├── SDAutoLayout-prefix.pch │ └── SDAutoLayout.xcconfig │ └── SDWebImage │ ├── SDWebImage-dummy.m │ ├── SDWebImage-prefix.pch │ └── SDWebImage.xcconfig ├── README.md ├── SocketIMDemo.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── mac.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ ├── mac.xcuserdatad │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ │ ├── SocketIMDemo.xcscheme │ │ └── xcschememanagement.plist │ └── zhaolongjie.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── SocketIMDemo.xcworkspace ├── contents.xcworkspacedata └── xcuserdata │ ├── mac.xcuserdatad │ ├── UserInterfaceState.xcuserstate │ └── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ └── zhaolongjie.xcuserdatad │ └── UserInterfaceState.xcuserstate ├── SocketIMDemo ├── AppCustoms │ ├── AppCustoms.h │ ├── AppCustoms.m │ └── HostResolver │ │ ├── HostResolver.h │ │ └── HostResolver.m ├── AppDelegate │ ├── AppDelegate.h │ └── AppDelegate.m ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ └── 未标题-3.png │ ├── Contents.json │ └── default_image_icon.imageset │ │ ├── Contents.json │ │ └── 未标题-3.png ├── Base.lproj │ └── LaunchScreen.storyboard ├── Info.plist ├── InterfaceService │ ├── ImService │ │ ├── BusinessIMClass │ │ │ ├── IMSocketControl.h │ │ │ ├── IMSocketControl.m │ │ │ ├── IMSocketIO.h │ │ │ ├── IMSocketIO.m │ │ │ ├── IMSocketModules.h │ │ │ ├── IMSocketModules.m │ │ │ ├── UserIMSocket.h │ │ │ └── UserIMSocket.m │ │ └── ToolIMClass │ │ │ ├── IMSocketCallBackBlock.h │ │ │ ├── IMSocketDefines.h │ │ │ ├── IMSocketHeader.h │ │ │ ├── IMSocketHeader.m │ │ │ ├── IMSocketListener.h │ │ │ ├── IMSocketListener.m │ │ │ ├── IMSocketReceiver.h │ │ │ ├── IMSocketReqContext.h │ │ │ ├── IMSocketReqContext.m │ │ │ ├── IMSocketRespAgent.h │ │ │ ├── IMSocketRespAgent.m │ │ │ ├── IMSocketUserHandler.h │ │ │ ├── IMSocketUserHandler.m │ │ │ ├── ProtocolClientReq.h │ │ │ ├── ProtocolClientReq.m │ │ │ ├── ProtocolServerResp.h │ │ │ └── ProtocolServerResp.m │ └── InterfaceService.h ├── ModelManager │ ├── Models │ │ ├── Chater.h │ │ ├── Chater.m │ │ ├── User.h │ │ └── User.m │ └── UserManager │ │ ├── UserManager.h │ │ └── UserManager.m ├── Supporting Files │ ├── PrefixHeader.pch │ ├── main.m │ └── readme.md ├── Utikles │ ├── CMDeviceInfo │ │ ├── CMDeviceInfo.h │ │ └── CMDeviceInfo.m │ ├── Category │ │ ├── NSString+Category.h │ │ ├── NSString+Category.m │ │ ├── UIColor+FlatUI.h │ │ ├── UIColor+FlatUI.m │ │ ├── UIImage+Category.h │ │ └── UIImage+Category.m │ ├── ThirdParty │ │ └── Realm+JSON │ │ │ ├── MCJSONDateTransformer.h │ │ │ ├── MCJSONDateTransformer.m │ │ │ ├── MCJSONNonNullStringTransformer.h │ │ │ ├── MCJSONNonNullStringTransformer.m │ │ │ ├── MCJSONPrimaryKeyTransformer.h │ │ │ ├── MCJSONPrimaryKeyTransformer.m │ │ │ ├── MCJSONValueTransformer.h │ │ │ ├── MCJSONValueTransformer.m │ │ │ ├── RLMObject+Copying.h │ │ │ ├── RLMObject+Copying.m │ │ │ ├── RLMObject+JSON.h │ │ │ └── RLMObject+JSON.m │ └── Utikles.h ├── ViewControllers │ ├── ChatFriendController │ │ ├── ChatFriendController.h │ │ └── ChatFriendController.m │ ├── ChatListController │ │ ├── ChatListController.h │ │ └── ChatListController.m │ ├── ChatMineController │ │ ├── ChatMineController.h │ │ ├── ChatMineController.m │ │ ├── ChatMineView.h │ │ ├── ChatMineView.m │ │ └── ChatMineViewTag.h │ ├── MainViewController.h │ └── MainViewController.m └── iOS代码规范文档.pdf └── SocketIMDemoTests ├── Info.plist ├── SocketIMDemoTests.m └── Utikles ├── CMDeviceInfoTest.m ├── NSStringCategoryTest.m └── UIColorFlatUITest.m /Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | 3 | platform :ios, '8.0' 4 | inhibit_all_warnings! 5 | target 'SocketIMDemo' do 6 | pod 'SDAutoLayout' #自动布局 7 | pod 'CocoaAsyncSocket', '~> 7.6.2' 8 | pod 'MJExtension' 9 | pod 'MJRefresh' #上/下拉刷新/加载 10 | pod 'SDWebImage' #加载网络图片 11 | pod 'Realm', '~> 2.8.1' #realm数据库 12 | end 13 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - CocoaAsyncSocket (7.6.2) 3 | - MJExtension (3.0.13) 4 | - MJRefresh (3.1.15.3) 5 | - Realm (2.8.3): 6 | - Realm/Headers (= 2.8.3) 7 | - Realm/Headers (2.8.3) 8 | - SDAutoLayout (2.2.0) 9 | - SDWebImage (4.3.0): 10 | - SDWebImage/Core (= 4.3.0) 11 | - SDWebImage/Core (4.3.0) 12 | 13 | DEPENDENCIES: 14 | - CocoaAsyncSocket (~> 7.6.2) 15 | - MJExtension 16 | - MJRefresh 17 | - Realm (~> 2.8.1) 18 | - SDAutoLayout 19 | - SDWebImage 20 | 21 | SPEC CHECKSUMS: 22 | CocoaAsyncSocket: 3541e024f48c54b251638ef72d51dd42808de932 23 | MJExtension: 5932755f451458eefa24239358817f8d291240c7 24 | MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7 25 | Realm: 3601ef091c8c499a31101d8563b991e75546cdce 26 | SDAutoLayout: c5509e77ae75735d9a39f7bc83dba6d3f75d49d8 27 | SDWebImage: 6da6c8bca115addc4de8613362e1b15f66333825 28 | 29 | PODFILE CHECKSUM: 9e102a4a36fe65925092fb7d8c012930baf83e7a 30 | 31 | COCOAPODS: 1.1.1 32 | -------------------------------------------------------------------------------- /Pods/Headers/Private/CocoaAsyncSocket/GCDAsyncSocket.h: -------------------------------------------------------------------------------- 1 | ../../../CocoaAsyncSocket/Source/GCD/GCDAsyncSocket.h -------------------------------------------------------------------------------- /Pods/Headers/Private/CocoaAsyncSocket/GCDAsyncUdpSocket.h: -------------------------------------------------------------------------------- 1 | ../../../CocoaAsyncSocket/Source/GCD/GCDAsyncUdpSocket.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/MJExtensionConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJExtensionConst.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/MJFoundation.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJFoundation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/MJProperty.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJProperty.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/MJPropertyKey.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJPropertyKey.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/MJPropertyType.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJPropertyType.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/NSObject+MJClass.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJClass.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/NSObject+MJCoding.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJCoding.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/NSObject+MJKeyValue.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJKeyValue.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/NSObject+MJProperty.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJProperty.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJExtension/NSString+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSString+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshComponent.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefreshConst.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/NSBundle+MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/NSError+RLMSync.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/NSError+RLMSync.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMAccessor.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMAccessor.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMArray.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMArray.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMArray_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMArray_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMCollection.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMCollection.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMConstants.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMConstants.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMListBase.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMListBase.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMMigration.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMMigration.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMMigration_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMMigration_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMObject.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObject.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMObjectBase.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObjectBase.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMObjectBase_Dynamic.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObjectBase_Dynamic.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMObjectSchema.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObjectSchema.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMObjectSchema_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObjectSchema_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMObjectStore.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObjectStore.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMObject_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObject_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMOptionalBase.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMOptionalBase.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMPlatform.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMPlatform.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMProperty.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMProperty.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMProperty_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMProperty_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMRealm.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMRealm.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMRealmConfiguration+Sync.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMRealmConfiguration+Sync.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMRealmConfiguration.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMRealmConfiguration.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMRealmConfiguration_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMRealmConfiguration_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMRealm_Dynamic.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMRealm_Dynamic.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMRealm_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMRealm_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMResults.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMResults.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMResults_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMResults_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSchema.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSchema.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSchema_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSchema_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncConfiguration.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncConfiguration.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncConfiguration_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncConfiguration_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncCredentials.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncCredentials.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncManager.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncManager.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncManager_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncManager_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncPermission.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermission.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncPermissionChange.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionChange.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncPermissionChange_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionChange_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncPermissionOffer.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionOffer.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncPermissionOfferResponse.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionOfferResponse.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncPermissionOfferResponse_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionOfferResponse_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncPermissionOffer_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionOffer_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncPermissionResults.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionResults.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncPermissionValue.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionValue.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncPermission_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermission_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncSession.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncSession.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncUser.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncUser.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncUtil.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncUtil.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMSyncUtil_Private.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncUtil_Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/RLMThreadSafeReference.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMThreadSafeReference.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Realm/Realm.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/Realm.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDAutoLayout/SDAutoLayout.h: -------------------------------------------------------------------------------- 1 | ../../../SDAutoLayout/SDAutoLayoutDemo/SDAutoLayout/SDAutoLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDAutoLayout/UITableView+SDAutoTableViewCellHeight.h: -------------------------------------------------------------------------------- 1 | ../../../SDAutoLayout/SDAutoLayoutDemo/SDAutoLayout/UITableView+SDAutoTableViewCellHeight.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDAutoLayout/UIView+SDAutoLayout.h: -------------------------------------------------------------------------------- 1 | ../../../SDAutoLayout/SDAutoLayoutDemo/SDAutoLayout/UIView+SDAutoLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/NSButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSButton+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/NSImage+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDImageCacheConfig.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageCoderHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageCodersManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageFrame.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageGIFCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageImageIOCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageTransition.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageTransition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImage+ForceDecode.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImageView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/CocoaAsyncSocket/GCDAsyncSocket.h: -------------------------------------------------------------------------------- 1 | ../../../CocoaAsyncSocket/Source/GCD/GCDAsyncSocket.h -------------------------------------------------------------------------------- /Pods/Headers/Public/CocoaAsyncSocket/GCDAsyncUdpSocket.h: -------------------------------------------------------------------------------- 1 | ../../../CocoaAsyncSocket/Source/GCD/GCDAsyncUdpSocket.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/MJExtensionConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJExtensionConst.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/MJFoundation.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJFoundation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/MJProperty.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJProperty.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/MJPropertyKey.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJPropertyKey.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/MJPropertyType.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJPropertyType.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/NSObject+MJClass.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJClass.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/NSObject+MJCoding.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJCoding.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/NSObject+MJKeyValue.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJKeyValue.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/NSObject+MJProperty.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJProperty.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJExtension/NSString+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSString+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshComponent.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefreshConst.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/NSBundle+MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/NSError+RLMSync.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/NSError+RLMSync.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMArray.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMArray.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMCollection.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMCollection.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMConstants.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMConstants.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMListBase.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMListBase.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMMigration.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMMigration.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMObject.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObject.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMObjectBase.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObjectBase.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMObjectBase_Dynamic.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObjectBase_Dynamic.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMObjectSchema.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMObjectSchema.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMOptionalBase.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMOptionalBase.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMPlatform.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMPlatform.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMProperty.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMProperty.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMRealm.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMRealm.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMRealmConfiguration+Sync.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMRealmConfiguration+Sync.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMRealmConfiguration.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMRealmConfiguration.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMRealm_Dynamic.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMRealm_Dynamic.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMResults.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMResults.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSchema.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSchema.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncConfiguration.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncConfiguration.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncCredentials.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncCredentials.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncManager.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncManager.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncPermission.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermission.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncPermissionChange.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionChange.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncPermissionOffer.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionOffer.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncPermissionOfferResponse.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionOfferResponse.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncPermissionResults.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionResults.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncPermissionValue.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncPermissionValue.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncSession.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncSession.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncUser.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncUser.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMSyncUtil.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMSyncUtil.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/RLMThreadSafeReference.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/RLMThreadSafeReference.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Realm/Realm.h: -------------------------------------------------------------------------------- 1 | ../../../Realm/include/Realm.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDAutoLayout/SDAutoLayout.h: -------------------------------------------------------------------------------- 1 | ../../../SDAutoLayout/SDAutoLayoutDemo/SDAutoLayout/SDAutoLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDAutoLayout/UITableView+SDAutoTableViewCellHeight.h: -------------------------------------------------------------------------------- 1 | ../../../SDAutoLayout/SDAutoLayoutDemo/SDAutoLayout/UITableView+SDAutoTableViewCellHeight.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDAutoLayout/UIView+SDAutoLayout.h: -------------------------------------------------------------------------------- 1 | ../../../SDAutoLayout/SDAutoLayoutDemo/SDAutoLayout/UIView+SDAutoLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/NSButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSButton+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/NSImage+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDImageCacheConfig.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageCoderHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageCodersManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageFrame.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageGIFCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageImageIOCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageTransition.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageTransition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImage+ForceDecode.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImageView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h -------------------------------------------------------------------------------- /Pods/MJExtension/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015 MJExtension (https://github.com/CoderMJLee/MJExtension) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJExtension.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 代码地址:https://github.com/CoderMJLee/MJExtension 8 | // 代码地址:http://code4app.com/ios/%E5%AD%97%E5%85%B8-JSON-%E4%B8%8E%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%BD%AC%E6%8D%A2/5339992a933bf062608b4c57 9 | 10 | #import "NSObject+MJCoding.h" 11 | #import "NSObject+MJProperty.h" 12 | #import "NSObject+MJClass.h" 13 | #import "NSObject+MJKeyValue.h" 14 | #import "NSString+MJExtension.h" 15 | #import "MJExtensionConst.h" -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJExtensionConst.m: -------------------------------------------------------------------------------- 1 | #ifndef __MJExtensionConst__M__ 2 | #define __MJExtensionConst__M__ 3 | 4 | #import 5 | 6 | /** 7 | * 成员变量类型(属性类型) 8 | */ 9 | NSString *const MJPropertyTypeInt = @"i"; 10 | NSString *const MJPropertyTypeShort = @"s"; 11 | NSString *const MJPropertyTypeFloat = @"f"; 12 | NSString *const MJPropertyTypeDouble = @"d"; 13 | NSString *const MJPropertyTypeLong = @"l"; 14 | NSString *const MJPropertyTypeLongLong = @"q"; 15 | NSString *const MJPropertyTypeChar = @"c"; 16 | NSString *const MJPropertyTypeBOOL1 = @"c"; 17 | NSString *const MJPropertyTypeBOOL2 = @"b"; 18 | NSString *const MJPropertyTypePointer = @"*"; 19 | 20 | NSString *const MJPropertyTypeIvar = @"^{objc_ivar=}"; 21 | NSString *const MJPropertyTypeMethod = @"^{objc_method=}"; 22 | NSString *const MJPropertyTypeBlock = @"@?"; 23 | NSString *const MJPropertyTypeClass = @"#"; 24 | NSString *const MJPropertyTypeSEL = @":"; 25 | NSString *const MJPropertyTypeId = @"@"; 26 | 27 | #endif -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJFoundation.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJFoundation.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 14/7/16. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MJFoundation : NSObject 12 | + (BOOL)isClassFromFoundation:(Class)c; 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJProperty.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJProperty.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/4/17. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 包装一个成员属性 8 | 9 | #import 10 | #import 11 | #import "MJPropertyType.h" 12 | #import "MJPropertyKey.h" 13 | 14 | /** 15 | * 包装一个成员 16 | */ 17 | @interface MJProperty : NSObject 18 | /** 成员属性 */ 19 | @property (nonatomic, assign) objc_property_t property; 20 | /** 成员属性的名字 */ 21 | @property (nonatomic, readonly) NSString *name; 22 | 23 | /** 成员属性的类型 */ 24 | @property (nonatomic, readonly) MJPropertyType *type; 25 | /** 成员属性来源于哪个类(可能是父类) */ 26 | @property (nonatomic, assign) Class srcClass; 27 | 28 | /**** 同一个成员属性 - 父类和子类的行为可能不一致(originKey、propertyKeys、objectClassInArray) ****/ 29 | /** 设置最原始的key */ 30 | - (void)setOriginKey:(id)originKey forClass:(Class)c; 31 | /** 对应着字典中的多级key(里面存放的数组,数组里面都是MJPropertyKey对象) */ 32 | - (NSArray *)propertyKeysForClass:(Class)c; 33 | 34 | /** 模型数组中的模型类型 */ 35 | - (void)setObjectClassInArray:(Class)objectClass forClass:(Class)c; 36 | - (Class)objectClassInArrayForClass:(Class)c; 37 | /**** 同一个成员变量 - 父类和子类的行为可能不一致(key、keys、objectClassInArray) ****/ 38 | 39 | /** 40 | * 设置object的成员变量值 41 | */ 42 | - (void)setValue:(id)value forObject:(id)object; 43 | /** 44 | * 得到object的成员属性值 45 | */ 46 | - (id)valueForObject:(id)object; 47 | 48 | /** 49 | * 初始化 50 | */ 51 | + (instancetype)cachedPropertyWithProperty:(objc_property_t)property; 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJPropertyKey.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyKey.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/8/11. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef enum { 12 | MJPropertyKeyTypeDictionary = 0, // 字典的key 13 | MJPropertyKeyTypeArray // 数组的key 14 | } MJPropertyKeyType; 15 | 16 | /** 17 | * 属性的key 18 | */ 19 | @interface MJPropertyKey : NSObject 20 | /** key的名字 */ 21 | @property (copy, nonatomic) NSString *name; 22 | /** key的种类,可能是@"10",可能是@"age" */ 23 | @property (assign, nonatomic) MJPropertyKeyType type; 24 | 25 | /** 26 | * 根据当前的key,也就是name,从object(字典或者数组)中取值 27 | */ 28 | - (id)valueInObject:(id)object; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJPropertyKey.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyKey.m 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/8/11. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJPropertyKey.h" 10 | 11 | @implementation MJPropertyKey 12 | 13 | - (id)valueInObject:(id)object 14 | { 15 | if ([object isKindOfClass:[NSDictionary class]] && self.type == MJPropertyKeyTypeDictionary) { 16 | return object[self.name]; 17 | } else if ([object isKindOfClass:[NSArray class]] && self.type == MJPropertyKeyTypeArray) { 18 | NSArray *array = object; 19 | NSUInteger index = self.name.intValue; 20 | if (index < array.count) return array[index]; 21 | return nil; 22 | } 23 | return nil; 24 | } 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJPropertyType.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyType.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 包装一种类型 8 | 9 | #import 10 | 11 | /** 12 | * 包装一种类型 13 | */ 14 | @interface MJPropertyType : NSObject 15 | /** 类型标识符 */ 16 | @property (nonatomic, copy) NSString *code; 17 | 18 | /** 是否为id类型 */ 19 | @property (nonatomic, readonly, getter=isIdType) BOOL idType; 20 | 21 | /** 是否为基本数字类型:int、float等 */ 22 | @property (nonatomic, readonly, getter=isNumberType) BOOL numberType; 23 | 24 | /** 是否为BOOL类型 */ 25 | @property (nonatomic, readonly, getter=isBoolType) BOOL boolType; 26 | 27 | /** 对象类型(如果是基本数据类型,此值为nil) */ 28 | @property (nonatomic, readonly) Class typeClass; 29 | 30 | /** 类型是否来自于Foundation框架,比如NSString、NSArray */ 31 | @property (nonatomic, readonly, getter = isFromFoundation) BOOL fromFoundation; 32 | /** 类型是否不支持KVC */ 33 | @property (nonatomic, readonly, getter = isKVCDisabled) BOOL KVCDisabled; 34 | 35 | /** 36 | * 获得缓存的类型对象 37 | */ 38 | + (instancetype)cachedTypeWithCode:(NSString *)code; 39 | @end -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/NSObject+MJCoding.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+MJCoding.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MJExtensionConst.h" 11 | 12 | /** 13 | * Codeing协议 14 | */ 15 | @protocol MJCoding 16 | @optional 17 | /** 18 | * 这个数组中的属性名才会进行归档 19 | */ 20 | + (NSArray *)mj_allowedCodingPropertyNames; 21 | /** 22 | * 这个数组中的属性名将会被忽略:不进行归档 23 | */ 24 | + (NSArray *)mj_ignoredCodingPropertyNames; 25 | @end 26 | 27 | @interface NSObject (MJCoding) 28 | /** 29 | * 解码(从文件中解析对象) 30 | */ 31 | - (void)mj_decode:(NSCoder *)decoder; 32 | /** 33 | * 编码(将对象写入文件中) 34 | */ 35 | - (void)mj_encode:(NSCoder *)encoder; 36 | @end 37 | 38 | /** 39 | 归档的实现 40 | */ 41 | #define MJCodingImplementation \ 42 | - (id)initWithCoder:(NSCoder *)decoder \ 43 | { \ 44 | if (self = [super init]) { \ 45 | [self mj_decode:decoder]; \ 46 | } \ 47 | return self; \ 48 | } \ 49 | \ 50 | - (void)encodeWithCoder:(NSCoder *)encoder \ 51 | { \ 52 | [self mj_encode:encoder]; \ 53 | } 54 | 55 | #define MJExtensionCodingImplementation MJCodingImplementation -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/NSString+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+MJExtension.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/6/7. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MJExtensionConst.h" 11 | 12 | @interface NSString (MJExtension) 13 | /** 14 | * 驼峰转下划线(loveYou -> love_you) 15 | */ 16 | - (NSString *)mj_underlineFromCamel; 17 | /** 18 | * 下划线转驼峰(love_you -> loveYou) 19 | */ 20 | - (NSString *)mj_camelFromUnderline; 21 | /** 22 | * 首字母变大写 23 | */ 24 | - (NSString *)mj_firstCharUpper; 25 | /** 26 | * 首字母变小写 27 | */ 28 | - (NSString *)mj_firstCharLower; 29 | 30 | - (BOOL)mj_isPureInt; 31 | 32 | - (NSURL *)mj_url; 33 | @end 34 | 35 | @interface NSString (MJExtensionDeprecated_v_2_5_16) 36 | - (NSString *)underlineFromCamel MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 37 | - (NSString *)camelFromUnderline MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 38 | - (NSString *)firstCharUpper MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 39 | - (NSString *)firstCharLower MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 40 | - (BOOL)isPureInt MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 41 | - (NSURL *)url MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 42 | @end 43 | -------------------------------------------------------------------------------- /Pods/MJRefresh/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshAutoFooter : MJRefreshFooter 12 | /** 是否自动刷新(默认为YES) */ 13 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; 14 | 15 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 16 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性"); 17 | 18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; 20 | 21 | /** 是否每一次拖拽只发一次请求 */ 22 | @property (assign, nonatomic, getter=isOnlyRefreshPerDrag) BOOL onlyRefreshPerDrag; 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshBackFooter : MJRefreshFooter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshFooter.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 上拉刷新控件 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshFooter : MJRefreshComponent 13 | /** 创建footer */ 14 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建footer */ 16 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 提示没有更多的数据 */ 19 | - (void)endRefreshingWithNoMoreData; 20 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData"); 21 | 22 | /** 重置没有更多的数据(消除没有更多数据的状态) */ 23 | - (void)resetNoMoreData; 24 | 25 | /** 忽略多少scrollView的contentInset的bottom */ 26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom; 27 | 28 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */ 29 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden MJRefreshDeprecated("不建议使用此属性,开发者请自行控制footer的显示和隐藏。基于安全考虑,在未来的某些版本此属性可能作废"); 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshHeader.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 下拉刷新控件:负责监控用户下拉的状态 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshHeader : MJRefreshComponent 13 | /** 创建header */ 14 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建header */ 16 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 这个key用来存储上一次下拉刷新成功的时间 */ 19 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey; 20 | /** 上一次下拉刷新成功的时间 */ 21 | @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime; 22 | 23 | /** 忽略多少scrollView的contentInset的top */ 24 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop; 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter 12 | /** 菊花的样式 */ 13 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 14 | @end 15 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoFooter.h" 10 | 11 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter 12 | /** 文字距离圈圈、箭头的距离 */ 13 | @property (assign, nonatomic) CGFloat labelLeftInset; 14 | /** 显示刷新状态的label */ 15 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 16 | 17 | /** 设置state状态下的文字 */ 18 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 19 | 20 | /** 隐藏刷新状态的文字 */ 21 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden; 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackFooter.h" 10 | 11 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter 12 | /** 文字距离圈圈、箭头的距离 */ 13 | @property (assign, nonatomic) CGFloat labelLeftInset; 14 | /** 显示刷新状态的label */ 15 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 16 | /** 设置state状态下的文字 */ 17 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 18 | 19 | /** 获取state状态下的title */ 20 | - (NSString *)titleForState:(MJRefreshState)state; 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshGifHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshGifHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshNormalHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshNormalHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshStateHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshHeader.h" 10 | 11 | @interface MJRefreshStateHeader : MJRefreshHeader 12 | #pragma mark - 刷新时间相关 13 | /** 利用这个block来决定显示的更新时间文字 */ 14 | @property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime); 15 | /** 显示上一次刷新时间的label */ 16 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel; 17 | 18 | #pragma mark - 状态相关 19 | /** 文字距离圈圈、箭头的距离 */ 20 | @property (assign, nonatomic) CGFloat labelLeftInset; 21 | /** 显示刷新状态的label */ 22 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 23 | /** 设置state状态下的文字 */ 24 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hant.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | "MJRefreshHeaderIdleText" = "下拉可以刷新"; 2 | "MJRefreshHeaderPullingText" = "鬆開立即刷新"; 3 | "MJRefreshHeaderRefreshingText" = "正在刷新數據中..."; 4 | 5 | "MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多"; 6 | "MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據..."; 7 | "MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢"; 8 | 9 | "MJRefreshBackFooterIdleText" = "上拉可以加載更多"; 10 | "MJRefreshBackFooterPullingText" = "鬆開立即加載更多"; 11 | "MJRefreshBackFooterRefreshingText" = "正在加載更多的數據..."; 12 | "MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢"; 13 | 14 | "MJRefreshHeaderLastTimeText" = "最後更新:"; 15 | "MJRefreshHeaderDateTodayText" = "今天"; 16 | "MJRefreshHeaderNoneLastDateText" = "無記錄"; 17 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | 4 | #import "UIScrollView+MJRefresh.h" 5 | #import "UIScrollView+MJExtension.h" 6 | #import "UIView+MJExtension.h" 7 | 8 | #import "MJRefreshNormalHeader.h" 9 | #import "MJRefreshGifHeader.h" 10 | 11 | #import "MJRefreshBackNormalFooter.h" 12 | #import "MJRefreshBackGifFooter.h" 13 | #import "MJRefreshAutoNormalFooter.h" 14 | #import "MJRefreshAutoGifFooter.h" -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+MJRefresh.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 16/6/13. 6 | // Copyright © 2016年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSBundle (MJRefresh) 12 | + (instancetype)mj_refreshBundle; 13 | + (UIImage *)mj_arrowImage; 14 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value; 15 | + (NSString *)mj_localizedStringForKey:(NSString *)key; 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIScrollView (MJExtension) 13 | @property (readonly, nonatomic) UIEdgeInsets mj_inset; 14 | 15 | @property (assign, nonatomic) CGFloat mj_insetT; 16 | @property (assign, nonatomic) CGFloat mj_insetB; 17 | @property (assign, nonatomic) CGFloat mj_insetL; 18 | @property (assign, nonatomic) CGFloat mj_insetR; 19 | 20 | @property (assign, nonatomic) CGFloat mj_offsetX; 21 | @property (assign, nonatomic) CGFloat mj_offsetY; 22 | 23 | @property (assign, nonatomic) CGFloat mj_contentW; 24 | @property (assign, nonatomic) CGFloat mj_contentH; 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+MJRefresh.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 给ScrollView增加下拉刷新、上拉刷新的功能 9 | 10 | #import 11 | #import "MJRefreshConst.h" 12 | 13 | @class MJRefreshHeader, MJRefreshFooter; 14 | 15 | @interface UIScrollView (MJRefresh) 16 | /** 下拉刷新控件 */ 17 | @property (strong, nonatomic) MJRefreshHeader *mj_header; 18 | @property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header"); 19 | /** 上拉刷新控件 */ 20 | @property (strong, nonatomic) MJRefreshFooter *mj_footer; 21 | @property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer"); 22 | 23 | #pragma mark - other 24 | - (NSInteger)mj_totalDataCount; 25 | @property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount); 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_x; 14 | @property (assign, nonatomic) CGFloat mj_y; 15 | @property (assign, nonatomic) CGFloat mj_w; 16 | @property (assign, nonatomic) CGFloat mj_h; 17 | @property (assign, nonatomic) CGSize mj_size; 18 | @property (assign, nonatomic) CGPoint mj_origin; 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - CocoaAsyncSocket (7.6.2) 3 | - MJExtension (3.0.13) 4 | - MJRefresh (3.1.15.3) 5 | - Realm (2.8.3): 6 | - Realm/Headers (= 2.8.3) 7 | - Realm/Headers (2.8.3) 8 | - SDAutoLayout (2.2.0) 9 | - SDWebImage (4.3.0): 10 | - SDWebImage/Core (= 4.3.0) 11 | - SDWebImage/Core (4.3.0) 12 | 13 | DEPENDENCIES: 14 | - CocoaAsyncSocket (~> 7.6.2) 15 | - MJExtension 16 | - MJRefresh 17 | - Realm (~> 2.8.1) 18 | - SDAutoLayout 19 | - SDWebImage 20 | 21 | SPEC CHECKSUMS: 22 | CocoaAsyncSocket: 3541e024f48c54b251638ef72d51dd42808de932 23 | MJExtension: 5932755f451458eefa24239358817f8d291240c7 24 | MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7 25 | Realm: 3601ef091c8c499a31101d8563b991e75546cdce 26 | SDAutoLayout: c5509e77ae75735d9a39f7bc83dba6d3f75d49d8 27 | SDWebImage: 6da6c8bca115addc4de8613362e1b15f66333825 28 | 29 | PODFILE CHECKSUM: 9e102a4a36fe65925092fb7d8c012930baf83e7a 30 | 31 | COCOAPODS: 1.1.1 32 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CocoaAsyncSocket.xcscheme 8 | 9 | isShown 10 | 11 | 12 | MJExtension.xcscheme 13 | 14 | isShown 15 | 16 | 17 | MJRefresh.xcscheme 18 | 19 | isShown 20 | 21 | 22 | Pods-SocketIMDemo.xcscheme 23 | 24 | isShown 25 | 26 | 27 | Realm.xcscheme 28 | 29 | isShown 30 | 31 | 32 | SDAutoLayout.xcscheme 33 | 34 | isShown 35 | 36 | 37 | SDWebImage.xcscheme 38 | 39 | isShown 40 | 41 | 42 | 43 | SuppressBuildableAutocreation 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/zhaolongjie.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CocoaAsyncSocket.xcscheme 8 | 9 | orderHint 10 | 1 11 | 12 | MJExtension.xcscheme 13 | 14 | orderHint 15 | 2 16 | 17 | MJRefresh.xcscheme 18 | 19 | orderHint 20 | 3 21 | 22 | Pods-SocketIMDemo.xcscheme 23 | 24 | orderHint 25 | 4 26 | 27 | Realm.xcscheme 28 | 29 | orderHint 30 | 5 31 | 32 | SDAutoLayout.xcscheme 33 | 34 | orderHint 35 | 6 36 | 37 | SDWebImage.xcscheme 38 | 39 | orderHint 40 | 7 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Pods/Realm/Realm/NSError+RLMSync.m: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2017 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "NSError+RLMSync.h" 20 | 21 | #import "RLMSyncUtil.h" 22 | 23 | @implementation NSError (RLMSync) 24 | 25 | - (void(^)(void))rlmSync_clientResetBlock { 26 | if (self.domain == RLMSyncErrorDomain && self.code == RLMSyncErrorClientResetError) { 27 | return self.userInfo[kRLMSyncInitiateClientResetBlockKey]; 28 | } 29 | return nil; 30 | } 31 | 32 | - (NSString *)rlmSync_clientResetBackedUpRealmPath { 33 | if (self.domain == RLMSyncErrorDomain && self.code == RLMSyncErrorClientResetError) { 34 | return self.userInfo[kRLMSyncPathOfRealmBackupCopyKey]; 35 | } 36 | return nil; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Pods/Realm/Realm/ObjectStore/src/binding_callback_thread_observer.cpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2017 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #include "binding_callback_thread_observer.hpp" 20 | 21 | namespace realm { 22 | BindingCallbackThreadObserver* g_binding_callback_thread_observer = nullptr; 23 | } 24 | -------------------------------------------------------------------------------- /Pods/Realm/Realm/ObjectStore/src/placeholder.cpp: -------------------------------------------------------------------------------- 1 | // This file is intentionally left blank. 2 | -------------------------------------------------------------------------------- /Pods/Realm/Realm/RLMConstants.m: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | 21 | RLMNotification const RLMRealmRefreshRequiredNotification = @"RLMRealmRefreshRequiredNotification"; 22 | RLMNotification const RLMRealmDidChangeNotification = @"RLMRealmDidChangeNotification"; 23 | 24 | NSString * const RLMErrorDomain = @"io.realm"; 25 | 26 | NSString * const RLMUnknownSystemErrorDomain = @"io.realm.unknown"; 27 | 28 | NSString * const RLMExceptionName = @"RLMException"; 29 | 30 | NSString * const RLMRealmVersionKey = @"RLMRealmVersion"; 31 | 32 | NSString * const RLMRealmCoreVersionKey = @"RLMRealmCoreVersion"; 33 | 34 | NSString * const RLMInvalidatedKey = @"invalidated"; 35 | -------------------------------------------------------------------------------- /Pods/Realm/Realm/RLMSwiftSupport.m: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMSwiftSupport.h" 20 | 21 | @implementation RLMSwiftSupport 22 | 23 | + (BOOL)isSwiftClassName:(NSString *)className { 24 | return [className rangeOfString:@"."].location != NSNotFound; 25 | } 26 | 27 | + (NSString *)demangleClassName:(NSString *)className { 28 | return [className substringFromIndex:[className rangeOfString:@"."].location + 1]; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Pods/Realm/Realm/RLMSyncPermission.m: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2016 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMSyncPermission_Private.h" 20 | 21 | @implementation RLMSyncPermission 22 | 23 | + (NSArray *)requiredProperties { 24 | return @[@"updatedAt", @"userId", @"path"]; 25 | } 26 | 27 | + (BOOL)shouldIncludeInDefaultSchema { 28 | return NO; 29 | } 30 | 31 | + (NSString *)_realmObjectName { 32 | return @"Permission"; 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Pods/Realm/Realm/Realm.modulemap: -------------------------------------------------------------------------------- 1 | framework module Realm { 2 | umbrella header "Realm.h" 3 | 4 | export * 5 | module * { export * } 6 | 7 | explicit module Private { 8 | header "RLMAccessor.h" 9 | header "RLMArray_Private.h" 10 | header "RLMListBase.h" 11 | header "RLMObjectBase_Dynamic.h" 12 | header "RLMObjectSchema_Private.h" 13 | header "RLMObjectStore.h" 14 | header "RLMObject_Private.h" 15 | header "RLMOptionalBase.h" 16 | header "RLMProperty_Private.h" 17 | header "RLMRealmConfiguration_Private.h" 18 | header "RLMRealm_Private.h" 19 | header "RLMResults_Private.h" 20 | header "RLMSchema_Private.h" 21 | header "RLMSyncConfiguration_Private.h" 22 | header "RLMSyncUtil_Private.h" 23 | } 24 | 25 | explicit module Dynamic { 26 | header "RLMRealm_Dynamic.h" 27 | header "RLMObjectBase_Dynamic.h" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Pods/Realm/core/librealmcore-ios.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/Pods/Realm/core/librealmcore-ios.a -------------------------------------------------------------------------------- /Pods/Realm/include/RLMArray_Private.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | @interface RLMArray () 24 | - (instancetype)initWithObjectClassName:(NSString *)objectClassName; 25 | - (NSString *)descriptionWithMaxDepth:(NSUInteger)depth; 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMListBase.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | 21 | @class RLMArray; 22 | 23 | NS_ASSUME_NONNULL_BEGIN 24 | 25 | // A base class for Swift generic Lists to make it possible to interact with 26 | // them from obj-c 27 | @interface RLMListBase : NSObject 28 | @property (nonatomic, strong) RLMArray *_rlmArray; 29 | 30 | - (instancetype)initWithArray:(RLMArray *)array; 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMMigration_Private.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | #import 21 | #import 22 | 23 | namespace realm { 24 | class Schema; 25 | } 26 | 27 | NS_ASSUME_NONNULL_BEGIN 28 | 29 | @interface RLMMigration () 30 | 31 | @property (nonatomic, strong) RLMRealm *oldRealm; 32 | @property (nonatomic, strong) RLMRealm *realm; 33 | 34 | - (instancetype)initWithRealm:(RLMRealm *)realm oldRealm:(RLMRealm *)oldRealm schema:(realm::Schema &)schema; 35 | 36 | - (void)execute:(RLMMigrationBlock)block; 37 | 38 | @end 39 | 40 | NS_ASSUME_NONNULL_END 41 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMObjectBase.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | @class RLMRealm; 24 | @class RLMSchema; 25 | @class RLMObjectSchema; 26 | 27 | /// :nodoc: 28 | @interface RLMObjectBase : NSObject 29 | 30 | @property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; 31 | 32 | - (instancetype)init NS_DESIGNATED_INITIALIZER; 33 | 34 | + (NSString *)className; 35 | 36 | // Returns whether the class is included in the default set of classes managed by a Realm. 37 | + (BOOL)shouldIncludeInDefaultSchema; 38 | 39 | + (nullable NSString *)_realmObjectName; 40 | 41 | @end 42 | 43 | NS_ASSUME_NONNULL_END 44 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMObjectSchema_Private.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMObjectSchema_Private.h" 20 | 21 | #import "object_schema.hpp" 22 | 23 | @interface RLMObjectSchema () 24 | // create realm::ObjectSchema copy 25 | - (realm::ObjectSchema)objectStoreCopy; 26 | 27 | // initialize with realm::ObjectSchema 28 | + (instancetype)objectSchemaForObjectStoreSchema:(realm::ObjectSchema const&)objectSchema; 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMOptionalBase.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2015 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | #import 21 | 22 | NS_ASSUME_NONNULL_BEGIN 23 | 24 | @class RLMObjectBase, RLMProperty; 25 | 26 | @interface RLMOptionalBase : NSProxy 27 | 28 | - (instancetype)init; 29 | 30 | @property (nonatomic, weak) RLMObjectBase *object; 31 | 32 | @property (nonatomic, unsafe_unretained) RLMProperty *property; 33 | 34 | @property (nonatomic, strong, nullable) id underlyingValue; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMPlatform.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/Pods/Realm/include/RLMPlatform.h -------------------------------------------------------------------------------- /Pods/Realm/include/RLMPredicateUtil.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2015 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | 18 | #import 19 | #import 20 | 21 | using ExpressionVisitor = std::function; 22 | NSPredicate *transformPredicate(NSPredicate *, ExpressionVisitor); 23 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMPrefix.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2015 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #ifdef __OBJC__ 20 | #import 21 | #endif 22 | 23 | #ifdef __cplusplus 24 | #import 25 | #import 26 | #import 27 | #import 28 | #import 29 | 30 | #import 31 | #import 32 | #import 33 | #import 34 | #import 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMProperty_Private.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2016 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | 21 | #import "property.hpp" 22 | 23 | @interface RLMProperty () 24 | 25 | + (instancetype)propertyForObjectStoreProperty:(const realm::Property&)property; 26 | 27 | - (realm::Property)objectStoreCopy; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMRealmConfiguration_Private.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMRealmConfiguration_Private.h" 20 | #import "shared_realm.hpp" 21 | 22 | @interface RLMRealmConfiguration () 23 | - (realm::Realm::Config&)config; 24 | 25 | @property (nonatomic) realm::SchemaMode schemaMode; 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMRealmUtil.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | #import 21 | #import 22 | 23 | @class RLMRealm; 24 | 25 | namespace realm { 26 | class BindingContext; 27 | } 28 | 29 | // Add a Realm to the weak cache 30 | void RLMCacheRealm(std::string const& path, RLMRealm *realm); 31 | // Get a Realm for the given path which can be used on the current thread 32 | RLMRealm *RLMGetThreadLocalCachedRealmForPath(std::string const& path); 33 | // Get a Realm for the given path 34 | RLMRealm *RLMGetAnyCachedRealmForPath(std::string const& path); 35 | // Clear the weak cache of Realms 36 | void RLMClearRealmCache(); 37 | 38 | std::unique_ptr RLMCreateBindingContext(RLMRealm *realm); 39 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMRealm_Private.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMRealm_Private.h" 20 | 21 | #import "RLMClassInfo.hpp" 22 | 23 | namespace realm { 24 | class Group; 25 | class Realm; 26 | } 27 | 28 | @interface RLMRealm () { 29 | @public 30 | std::shared_ptr _realm; 31 | RLMSchemaInfo _info; 32 | } 33 | 34 | // FIXME - group should not be exposed 35 | @property (nonatomic, readonly) realm::Group &group; 36 | @end 37 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMResults_Private.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | 21 | @class RLMObjectSchema; 22 | 23 | NS_ASSUME_NONNULL_BEGIN 24 | 25 | @interface RLMResults () 26 | @property (nonatomic, readonly, getter=isAttached) BOOL attached; 27 | 28 | + (instancetype)emptyDetachedResults; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSchema_Private.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2015 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMSchema_Private.h" 20 | 21 | #import 22 | 23 | namespace realm { 24 | class Schema; 25 | class ObjectSchema; 26 | } 27 | 28 | @interface RLMSchema () 29 | + (instancetype)dynamicSchemaFromObjectStoreSchema:(realm::Schema const&)objectStoreSchema; 30 | - (realm::Schema)objectStoreCopy; 31 | @end 32 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSwiftSupport.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | @interface RLMSwiftSupport : NSObject 24 | 25 | + (BOOL)isSwiftClassName:(NSString *)className; 26 | + (NSString *)demangleClassName:(NSString *)className; 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSyncConfiguration_Private.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2016 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | typedef NS_ENUM(NSUInteger, RLMSyncStopPolicy) { 24 | RLMSyncStopPolicyImmediately, 25 | RLMSyncStopPolicyLiveIndefinitely, 26 | RLMSyncStopPolicyAfterChangesUploaded, 27 | }; 28 | 29 | @interface RLMSyncConfiguration () 30 | 31 | @property (nonatomic, readwrite) RLMSyncStopPolicy stopPolicy; 32 | 33 | // Internal-only APIs 34 | @property (nullable, nonatomic) NSURL *customFileURL; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSyncConfiguration_Private.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2016 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMSyncConfiguration_Private.h" 20 | 21 | namespace realm { 22 | struct SyncConfig; 23 | } 24 | 25 | @interface RLMSyncConfiguration () 26 | 27 | - (instancetype)initWithRawConfig:(realm::SyncConfig)config; 28 | 29 | - (realm::SyncConfig)rawConfiguration; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSyncErrorResponseModel.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2016 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | #import "RLMSyncUtil_Private.h" 21 | 22 | NS_ASSUME_NONNULL_BEGIN 23 | 24 | @interface RLMSyncErrorResponseModel : NSObject RLM_SYNC_UNINITIALIZABLE 25 | 26 | @property (nonatomic, readonly, assign) NSInteger status; 27 | @property (nonatomic, readonly, assign) NSInteger code; 28 | @property (nonatomic, readonly, copy) NSString *title; 29 | @property (nonatomic, readonly, copy) NSString *hint; 30 | 31 | - (instancetype)initWithDictionary:(NSDictionary *)jsonDictionary; 32 | 33 | @end 34 | 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSyncPermissionOfferResponse_Private.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2016 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMSyncPermissionOfferResponse.h" 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | @interface RLMSyncPermissionOfferResponse() 24 | 25 | @property (readwrite) NSString *id; 26 | @property (readwrite) NSDate *createdAt; 27 | @property (readwrite) NSDate *updatedAt; 28 | @property (nullable, readwrite) NSNumber *statusCode; 29 | @property (nullable, readwrite) NSString *statusMessage; 30 | 31 | @property (readwrite) NSString *token; 32 | @property (nullable, readwrite) NSString *realmUrl; 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSyncPermissionResults_Private.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2017 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMSyncPermissionResults.h" 20 | 21 | #import "sync/sync_permission.hpp" 22 | 23 | @interface RLMSyncPermissionResults () 24 | 25 | - (instancetype)initWithResults:(std::unique_ptr)results; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSyncPermissionValue_Private.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2017 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMSyncPermissionValue.h" 20 | 21 | #import "sync/sync_permission.hpp" 22 | 23 | @interface RLMSyncPermissionValue () 24 | 25 | - (instancetype)initWithPermission:(realm::Permission)permission; 26 | 27 | - (realm::Permission)rawPermission; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSyncPermission_Private.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2016 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMSyncPermission.h" 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | @interface RLMSyncPermission() 24 | 25 | @property (readwrite) NSDate *updatedAt; 26 | @property (readwrite) NSString *userId; 27 | @property (readwrite) NSString *path; 28 | 29 | @property (readwrite) BOOL mayRead; 30 | @property (readwrite) BOOL mayWrite; 31 | @property (readwrite) BOOL mayManage; 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSyncSessionRefreshHandle.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2017 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import 20 | 21 | @class RLMSyncUser; 22 | 23 | /// An object that handles refreshing a session's token periodically, as long 24 | /// as the session remains live and valid. 25 | @interface RLMSyncSessionRefreshHandle : NSObject 26 | 27 | - (void)scheduleRefreshTimer:(NSDate *)dateWhenTokenExpires; 28 | - (void)invalidate; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMSyncSessionRefreshHandle.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2016 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #import "RLMSyncSessionRefreshHandle.h" 20 | 21 | #import "RLMSyncUtil_Private.h" 22 | 23 | #import 24 | 25 | namespace realm { 26 | class SyncSession; 27 | } 28 | 29 | @class RLMSyncUser; 30 | 31 | @interface RLMSyncSessionRefreshHandle () 32 | 33 | NS_ASSUME_NONNULL_BEGIN 34 | 35 | - (instancetype)initWithRealmURL:(NSURL *)realmURL 36 | user:(RLMSyncUser *)user 37 | session:(std::shared_ptr)session 38 | completionBlock:(nullable RLMSyncBasicErrorReportingBlock)completionBlock; 39 | 40 | NS_ASSUME_NONNULL_END 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Pods/Realm/include/RLMUpdateChecker.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2014 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | // Asynchronously check for updates to Realm if running on a simulator 20 | void RLMCheckForUpdates(); 21 | -------------------------------------------------------------------------------- /Pods/Realm/include/core/realm.hpp: -------------------------------------------------------------------------------- 1 | /************************************************************************* 2 | * 3 | * Copyright 2016 Realm Inc. 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | **************************************************************************/ 18 | 19 | #ifndef REALM_HPP 20 | #define REALM_HPP 21 | 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | 30 | #endif // REALM_HPP 31 | -------------------------------------------------------------------------------- /Pods/Realm/include/core/realm/descriptor_fwd.hpp: -------------------------------------------------------------------------------- 1 | /************************************************************************* 2 | * 3 | * Copyright 2016 Realm Inc. 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | **************************************************************************/ 18 | 19 | #ifndef REALM_DESCRIPTOR_FWD_HPP 20 | #define REALM_DESCRIPTOR_FWD_HPP 21 | 22 | #include 23 | 24 | 25 | namespace realm { 26 | 27 | class Descriptor; 28 | typedef std::shared_ptr DescriptorRef; 29 | typedef std::shared_ptr ConstDescriptorRef; 30 | 31 | } // namespace realm 32 | 33 | #endif // REALM_DESCRIPTOR_FWD_HPP 34 | -------------------------------------------------------------------------------- /Pods/Realm/include/core/realm/disable_sync_to_disk.hpp: -------------------------------------------------------------------------------- 1 | /************************************************************************* 2 | * 3 | * Copyright 2016 Realm Inc. 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | **************************************************************************/ 18 | 19 | #ifndef REALM_DISABLE_SYNC_TO_DISK_HPP 20 | #define REALM_DISABLE_SYNC_TO_DISK_HPP 21 | 22 | #include 23 | 24 | namespace realm { 25 | 26 | /// Completely disable synchronization with storage device to speed up unit 27 | /// testing. This is an unsafe mode of operation, and should never be used in 28 | /// production. This function is thread safe. 29 | void disable_sync_to_disk(); 30 | 31 | /// Returns true after disable_sync_to_disk() has been called. This function is 32 | /// thread safe. 33 | bool get_disable_sync_to_disk() noexcept; 34 | 35 | } // namespace realm 36 | 37 | #endif // REALM_DISABLE_SYNC_TO_DISK_HPP 38 | -------------------------------------------------------------------------------- /Pods/Realm/include/core/realm/history.hpp: -------------------------------------------------------------------------------- 1 | /************************************************************************* 2 | * 3 | * Copyright 2016 Realm Inc. 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | **************************************************************************/ 18 | 19 | #ifndef REALM_HISTORY_HPP 20 | #define REALM_HISTORY_HPP 21 | 22 | #include 23 | #include 24 | 25 | #include 26 | 27 | 28 | namespace realm { 29 | 30 | std::unique_ptr make_in_realm_history(const std::string& realm_path); 31 | 32 | } // namespace realm 33 | 34 | 35 | #endif // REALM_HISTORY_HPP 36 | -------------------------------------------------------------------------------- /Pods/Realm/include/core/realm/impl/array_writer.hpp: -------------------------------------------------------------------------------- 1 | /************************************************************************* 2 | * 3 | * Copyright 2016 Realm Inc. 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | **************************************************************************/ 18 | 19 | #ifndef REALM_ARRAY_WRITER_HPP 20 | #define REALM_ARRAY_WRITER_HPP 21 | 22 | #include 23 | 24 | namespace realm { 25 | namespace _impl { 26 | 27 | class ArrayWriterBase { 28 | public: 29 | virtual ~ArrayWriterBase() 30 | { 31 | } 32 | 33 | /// Write the specified array data and its checksum into free 34 | /// space. 35 | /// 36 | /// Returns the ref (position in the target stream) of the written copy of 37 | /// the specified array data. 38 | virtual ref_type write_array(const char* data, size_t size, uint32_t checksum) = 0; 39 | }; 40 | 41 | } // namespace impl_ 42 | } // namespace realm 43 | 44 | #endif // REALM_ARRAY_WRITER_HPP 45 | -------------------------------------------------------------------------------- /Pods/Realm/include/core/realm/link_view_fwd.hpp: -------------------------------------------------------------------------------- 1 | /************************************************************************* 2 | * 3 | * Copyright 2016 Realm Inc. 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | **************************************************************************/ 18 | 19 | #ifndef REALM_LINK_VIEW_FWD_HPP 20 | #define REALM_LINK_VIEW_FWD_HPP 21 | 22 | #include 23 | 24 | namespace realm { 25 | 26 | class LinkView; 27 | using LinkViewRef = std::shared_ptr; 28 | using ConstLinkViewRef = std::shared_ptr; 29 | 30 | } // namespace realm 31 | 32 | #endif // REALM_LINK_VIEW_FWD_HPP 33 | -------------------------------------------------------------------------------- /Pods/Realm/include/core/realm/sync/changeset_cooker.hpp: -------------------------------------------------------------------------------- 1 | /************************************************************************* 2 | * 3 | * REALM CONFIDENTIAL 4 | * __________________ 5 | * 6 | * [2011] - [2015] Realm Inc 7 | * All Rights Reserved. 8 | * 9 | * NOTICE: All information contained herein is, and remains 10 | * the property of Realm Incorporated and its suppliers, 11 | * if any. The intellectual and technical concepts contained 12 | * herein are proprietary to Realm Incorporated 13 | * and its suppliers and may be covered by U.S. and Foreign Patents, 14 | * patents in process, and are protected by trade secret or copyright law. 15 | * Dissemination of this information or reproduction of this material 16 | * is strictly forbidden unless prior written permission is obtained 17 | * from Realm Incorporated. 18 | * 19 | **************************************************************************/ 20 | 21 | #include 22 | 23 | #ifndef REALM_SYNC_CHANGESET_COOKER_HPP 24 | #define REALM_SYNC_CHANGESET_COOKER_HPP 25 | 26 | namespace realm { 27 | namespace sync { 28 | 29 | /// Copy raw changesets unmodified. 30 | class TrivialChangesetCooker: public ClientHistory::ChangesetCooker { 31 | public: 32 | bool cook_changeset(const Group&, const char* changeset, 33 | std::size_t changeset_size, 34 | util::AppendBuffer&) override; 35 | }; 36 | 37 | } // namespace sync 38 | } // namespace realm 39 | 40 | #endif // REALM_SYNC_CHANGESET_COOKER_HPP 41 | -------------------------------------------------------------------------------- /Pods/Realm/include/core/realm/sync/version.hpp: -------------------------------------------------------------------------------- 1 | /************************************************************************* 2 | * 3 | * REALM CONFIDENTIAL 4 | * __________________ 5 | * 6 | * [2011] - [2013] Realm Inc 7 | * All Rights Reserved. 8 | * 9 | * NOTICE: All information contained herein is, and remains 10 | * the property of Realm Incorporated and its suppliers, 11 | * if any. The intellectual and technical concepts contained 12 | * herein are proprietary to Realm Incorporated 13 | * and its suppliers and may be covered by U.S. and Foreign Patents, 14 | * patents in process, and are protected by trade secret or copyright law. 15 | * Dissemination of this information or reproduction of this material 16 | * is strictly forbidden unless prior written permission is obtained 17 | * from Realm Incorporated. 18 | * 19 | **************************************************************************/ 20 | #ifndef REALM_SYNC_VERSION_HPP 21 | #define REALM_SYNC_VERSION_HPP 22 | 23 | #include 24 | 25 | #define REALM_SYNC_VER_MAJOR 1 26 | #define REALM_SYNC_VER_MINOR 10 27 | #define REALM_SYNC_VER_PATCH 0 28 | #define REALM_SYNC_PRODUCT_NAME "realm-sync" 29 | 30 | #define REALM_SYNC_VER_STRING REALM_QUOTE(REALM_SYNC_VER_MAJOR) "." \ 31 | REALM_QUOTE(REALM_SYNC_VER_MINOR) "." REALM_QUOTE(REALM_SYNC_VER_PATCH) 32 | #define REALM_SYNC_VER_CHUNK "[" REALM_SYNC_PRODUCT_NAME "-" REALM_SYNC_VER_STRING "]" 33 | 34 | #endif // REALM_SYNC_VERSION_HPP 35 | -------------------------------------------------------------------------------- /Pods/Realm/include/core/realm/util/misc_errors.hpp: -------------------------------------------------------------------------------- 1 | /************************************************************************* 2 | * 3 | * Copyright 2016 Realm Inc. 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | **************************************************************************/ 18 | 19 | #ifndef REALM_UTIL_MISC_ERRORS_HPP 20 | #define REALM_UTIL_MISC_ERRORS_HPP 21 | 22 | #include 23 | 24 | 25 | namespace realm { 26 | namespace util { 27 | namespace error { 28 | 29 | enum misc_errors { 30 | unknown = 1, 31 | }; 32 | 33 | std::error_code make_error_code(misc_errors); 34 | 35 | } // namespace error 36 | } // namespace util 37 | } // namespace realm 38 | 39 | namespace std { 40 | 41 | template <> 42 | class is_error_code_enum { 43 | public: 44 | static const bool value = true; 45 | }; 46 | 47 | } // namespace std 48 | 49 | #endif // REALM_UTIL_MISC_ERRORS_HPP 50 | -------------------------------------------------------------------------------- /Pods/Realm/include/impl/apple/keychain_helper.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2016 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #ifndef REALM_OS_KEYCHAIN_HELPER_HPP 20 | #define REALM_OS_KEYCHAIN_HELPER_HPP 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | namespace realm { 27 | namespace keychain { 28 | 29 | std::vector metadata_realm_encryption_key(); 30 | 31 | class KeychainAccessException : public std::runtime_error { 32 | public: 33 | KeychainAccessException(int32_t error_code); 34 | }; 35 | 36 | } 37 | } 38 | 39 | #endif // REALM_OS_KEYCHAIN_HELPER_HPP 40 | -------------------------------------------------------------------------------- /Pods/Realm/include/sync/impl/network_reachability.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2017 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #ifndef REALM_OS_NETWORK_REACHABILITY_HPP 20 | #define REALM_OS_NETWORK_REACHABILITY_HPP 21 | 22 | #include 23 | 24 | #if REALM_PLATFORM_APPLE 25 | #define NETWORK_REACHABILITY_AVAILABLE !REALM_WATCHOS 26 | #else 27 | #define NETWORK_REACHABILITY_AVAILABLE 0 28 | #endif 29 | 30 | #endif // REALM_OS_NETWORK_REACHABILITY_HPP 31 | -------------------------------------------------------------------------------- /Pods/Realm/include/util/uuid.hpp: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Copyright 2017 Realm Inc. 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | // See the License for the specific language governing permissions and 15 | // limitations under the License. 16 | // 17 | //////////////////////////////////////////////////////////////////////////// 18 | 19 | #ifndef REALM_OS_UTIL_UUID_HPP 20 | #define REALM_OS_UTIL_UUID_HPP 21 | 22 | #include 23 | 24 | namespace realm { 25 | namespace util { 26 | 27 | // Generate a random UUID and return its formatted string representation. 28 | std::string uuid_string(); 29 | 30 | } // namespace util 31 | } // namespace realm 32 | 33 | #endif // REALM_OS_UTIL_UUID_HPP 34 | -------------------------------------------------------------------------------- /Pods/SDAutoLayout/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 GSD_iOS 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Pods/SDAutoLayout/SDAutoLayoutDemo/SDAutoLayout/SDAutoLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // SDAutoLayout.h 3 | // SDAutoLayoutDemo 4 | // 5 | // Created by gsd on 16/6/27. 6 | // Copyright © 2016年 gsd. All rights reserved. 7 | // 8 | 9 | 10 | /* 11 | 12 | SDAutoLayout 13 | 版本:2.1.7 14 | 发布:2016.08.12 15 | 16 | */ 17 | 18 | #ifndef SDAutoLayout_h 19 | #define SDAutoLayout_h 20 | 21 | #import "UIView+SDAutoLayout.h" 22 | #import "UITableView+SDAutoTableViewCellHeight.h" 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /Pods/SDWebImage/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | 21 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Fabrice Aneche 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import 11 | #import "SDWebImageCompat.h" 12 | 13 | typedef NS_ENUM(NSInteger, SDImageFormat) { 14 | SDImageFormatUndefined = -1, 15 | SDImageFormatJPEG = 0, 16 | SDImageFormatPNG, 17 | SDImageFormatGIF, 18 | SDImageFormatTIFF, 19 | SDImageFormatWebP, 20 | SDImageFormatHEIC 21 | }; 22 | 23 | @interface NSData (ImageContentType) 24 | 25 | /** 26 | * Return image format 27 | * 28 | * @param data the input image data 29 | * 30 | * @return the image format as `SDImageFormat` (enum) 31 | */ 32 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data; 33 | 34 | /** 35 | Convert SDImageFormat to UTType 36 | 37 | @param format Format as SDImageFormat 38 | @return The UTType as CFStringRef 39 | */ 40 | + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/NSImage+WebCache.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if SD_MAC 12 | 13 | #import 14 | 15 | @interface NSImage (WebCache) 16 | 17 | - (CGImageRef)CGImage; 18 | - (NSArray *)images; 19 | - (BOOL)isGIF; 20 | 21 | @end 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/NSImage+WebCache.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "NSImage+WebCache.h" 10 | 11 | #if SD_MAC 12 | 13 | @implementation NSImage (WebCache) 14 | 15 | - (CGImageRef)CGImage { 16 | NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 17 | CGImageRef cgImage = [self CGImageForProposedRect:&imageRect context:NULL hints:nil]; 18 | return cgImage; 19 | } 20 | 21 | - (NSArray *)images { 22 | return nil; 23 | } 24 | 25 | - (BOOL)isGIF { 26 | BOOL isGIF = NO; 27 | for (NSImageRep *rep in self.representations) { 28 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) { 29 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep; 30 | NSUInteger frameCount = [[bitmapRep valueForProperty:NSImageFrameCount] unsignedIntegerValue]; 31 | isGIF = frameCount > 1 ? YES : NO; 32 | break; 33 | } 34 | } 35 | return isGIF; 36 | } 37 | 38 | @end 39 | 40 | #endif 41 | 42 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDImageCacheConfig.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDImageCacheConfig.h" 10 | 11 | static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week 12 | 13 | @implementation SDImageCacheConfig 14 | 15 | - (instancetype)init { 16 | if (self = [super init]) { 17 | _shouldDecompressImages = YES; 18 | _shouldDisableiCloud = YES; 19 | _shouldCacheImagesInMemory = YES; 20 | _diskCacheReadingOptions = 0; 21 | _diskCacheWritingOptions = NSDataWritingAtomic; 22 | _maxCacheAge = kDefaultCacheMaxCacheAge; 23 | _maxCacheSize = 0; 24 | } 25 | return self; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageCoder.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCoder.h" 10 | 11 | NSString * const SDWebImageCoderScaleDownLargeImagesKey = @"scaleDownLargeImages"; 12 | 13 | CGColorSpaceRef SDCGColorSpaceGetDeviceRGB(void) { 14 | static CGColorSpaceRef colorSpace; 15 | static dispatch_once_t onceToken; 16 | dispatch_once(&onceToken, ^{ 17 | colorSpace = CGColorSpaceCreateDeviceRGB(); 18 | }); 19 | return colorSpace; 20 | } 21 | 22 | BOOL SDCGImageRefContainsAlpha(CGImageRef imageRef) { 23 | if (!imageRef) { 24 | return NO; 25 | } 26 | CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef); 27 | BOOL hasAlpha = !(alphaInfo == kCGImageAlphaNone || 28 | alphaInfo == kCGImageAlphaNoneSkipFirst || 29 | alphaInfo == kCGImageAlphaNoneSkipLast); 30 | return hasAlpha; 31 | } 32 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageFrame.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCompat.h" 11 | 12 | @interface SDWebImageFrame : NSObject 13 | 14 | // This class is used for creating animated images via `animatedImageWithFrames` in `SDWebImageCoderHelper`. Attension if you need animated images loop count, use `sd_imageLoopCount` property in `UIImage+MultiFormat` 15 | 16 | /** 17 | The image of current frame. You should not set an animated image. 18 | */ 19 | @property (nonatomic, strong, readonly, nonnull) UIImage *image; 20 | /** 21 | The duration of current frame to be displayed. The number is seconds but not milliseconds. You should not set this to zero. 22 | */ 23 | @property (nonatomic, readonly, assign) NSTimeInterval duration; 24 | 25 | /** 26 | Create a frame instance with specify image and duration 27 | 28 | @param image current frame's image 29 | @param duration current frame's duration 30 | @return frame instance 31 | */ 32 | + (instancetype _Nonnull)frameWithImage:(UIImage * _Nonnull)image duration:(NSTimeInterval)duration; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageFrame.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageFrame.h" 10 | 11 | @interface SDWebImageFrame () 12 | 13 | @property (nonatomic, strong, readwrite, nonnull) UIImage *image; 14 | @property (nonatomic, readwrite, assign) NSTimeInterval duration; 15 | 16 | @end 17 | 18 | @implementation SDWebImageFrame 19 | 20 | + (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration { 21 | SDWebImageFrame *frame = [[SDWebImageFrame alloc] init]; 22 | frame.image = image; 23 | frame.duration = duration; 24 | 25 | return frame; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageGIFCoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCoder.h" 11 | 12 | /** 13 | Built in coder using ImageIO that supports GIF encoding/decoding 14 | @note `SDWebImageIOCoder` supports GIF but only as static (will use the 1st frame). 15 | @note Use `SDWebImageGIFCoder` for fully animated GIFs - less performant than `FLAnimatedImage` 16 | @note If you decide to make all `UIImageView`(including `FLAnimatedImageView`) instance support GIF. You should add this coder to `SDWebImageCodersManager` and make sure that it has a higher priority than `SDWebImageIOCoder` 17 | @note The recommended approach for animated GIFs is using `FLAnimatedImage`. It's more performant than `UIImageView` for GIF displaying 18 | */ 19 | @interface SDWebImageGIFCoder : NSObject 20 | 21 | + (nonnull instancetype)sharedCoder; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCoder.h" 11 | 12 | /** 13 | Built in coder that supports PNG, JPEG, TIFF, includes support for progressive decoding. 14 | 15 | GIF 16 | Also supports static GIF (meaning will only handle the 1st frame). 17 | For a full GIF support, we recommend `FLAnimatedImage` or our less performant `SDWebImageGIFCoder` 18 | 19 | HEIC 20 | This coder also supports HEIC format because ImageIO supports it natively. But it depends on the system capabilities, so it won't work on all devices, see: https://devstreaming-cdn.apple.com/videos/wwdc/2017/511tj33587vdhds/511/511_working_with_heif_and_hevc.pdf 21 | Decode(Software): !Simulator && (iOS 11 || tvOS 11 || macOS 10.13) 22 | Decode(Hardware): !Simulator && ((iOS 11 && A9Chip) || (macOS 10.13 && 6thGenerationIntelCPU)) 23 | Encode(Software): macOS 10.13 24 | Encode(Hardware): !Simulator && ((iOS 11 && A10FusionChip) || (macOS 10.13 && 6thGenerationIntelCPU)) 25 | */ 26 | @interface SDWebImageImageIOCoder : NSObject 27 | 28 | + (nonnull instancetype)sharedCoder; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | 11 | @protocol SDWebImageOperation 12 | 13 | - (void)cancel; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | @interface UIImage (ForceDecode) 12 | 13 | + (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image; 14 | 15 | + (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIImage+ForceDecode.h" 10 | #import "SDWebImageCodersManager.h" 11 | 12 | @implementation UIImage (ForceDecode) 13 | 14 | + (UIImage *)decodedImageWithImage:(UIImage *)image { 15 | if (!image) { 16 | return nil; 17 | } 18 | NSData *tempData; 19 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(NO)}]; 20 | } 21 | 22 | + (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image { 23 | if (!image) { 24 | return nil; 25 | } 26 | NSData *tempData; 27 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(YES)}]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Laurin Brandner 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import "SDWebImageCompat.h" 11 | 12 | @interface UIImage (GIF) 13 | 14 | /** 15 | * Creates an animated UIImage from an NSData. 16 | * For static GIF, will create an UIImage with `images` array set to nil. For animated GIF, will create an UIImage with valid `images` array. 17 | */ 18 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data; 19 | 20 | /** 21 | * Checks if an UIImage instance is a GIF. Will use the `images` array. 22 | */ 23 | - (BOOL)isGIF; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+GIF.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Laurin Brandner 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import "UIImage+GIF.h" 11 | #import "SDWebImageGIFCoder.h" 12 | #import "NSImage+WebCache.h" 13 | 14 | @implementation UIImage (GIF) 15 | 16 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data { 17 | if (!data) { 18 | return nil; 19 | } 20 | return [[SDWebImageGIFCoder sharedCoder] decodedImageWithData:data]; 21 | } 22 | 23 | - (BOOL)isGIF { 24 | return (self.images != nil); 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | #import "NSData+ImageContentType.h" 11 | 12 | @interface UIImage (MultiFormat) 13 | 14 | /** 15 | * UIKit: 16 | * For static image format, this value is always 0. 17 | * For animated image format, 0 means infinite looping. 18 | * Note that because of the limitations of categories this property can get out of sync if you create another instance with CGImage or other methods. 19 | * AppKit: 20 | * NSImage currently only support animated via GIF imageRep unlike UIImage. 21 | * The getter of this property will get the loop count from GIF imageRep 22 | * The setter of this property will set the loop count from GIF imageRep 23 | */ 24 | @property (nonatomic, assign) NSUInteger sd_imageLoopCount; 25 | 26 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data; 27 | - (nullable NSData *)sd_imageData; 28 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_CocoaAsyncSocket : NSObject 3 | @end 4 | @implementation PodsDummy_CocoaAsyncSocket 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/CocoaAsyncSocket 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Realm" "${PODS_ROOT}/Headers/Public/SDAutoLayout" "${PODS_ROOT}/Headers/Public/SDWebImage" 4 | OTHER_LDFLAGS = -framework "CFNetwork" -framework "Security" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJExtension/MJExtension-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJExtension : NSObject 3 | @end 4 | @implementation PodsDummy_MJExtension 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJExtension/MJExtension-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJExtension/MJExtension.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MJExtension 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJExtension" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Realm" "${PODS_ROOT}/Headers/Public/SDAutoLayout" "${PODS_ROOT}/Headers/Public/SDWebImage" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 8 | SKIP_INSTALL = YES 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJRefresh : NSObject 3 | @end 4 | @implementation PodsDummy_MJRefresh 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MJRefresh 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJRefresh" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Realm" "${PODS_ROOT}/Headers/Public/SDAutoLayout" "${PODS_ROOT}/Headers/Public/SDWebImage" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 8 | SKIP_INSTALL = YES 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-SocketIMDemo/Pods-SocketIMDemo-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_SocketIMDemo : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_SocketIMDemo 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Realm/Realm-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Realm : NSObject 3 | @end 4 | @implementation PodsDummy_Realm 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Realm/Realm-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Realm/Realm.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_CXX_LANGUAGE_STANDARD = c++14 3 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Realm 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Realm" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Realm" "${PODS_ROOT}/Headers/Public/SDAutoLayout" "${PODS_ROOT}/Headers/Public/SDWebImage" 6 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Realm/core" 7 | OTHER_CPLUSPLUSFLAGS = -isystem "${PODS_ROOT}/Realm/include/core" 8 | OTHER_LDFLAGS = -l"c++" -l"realmcore-ios" -l"z" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT} 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USER_HEADER_SEARCH_PATHS = "${PODS_ROOT}/Realm/include" "${PODS_ROOT}/Realm/include/Realm" 15 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDAutoLayout/SDAutoLayout-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDAutoLayout : NSObject 3 | @end 4 | @implementation PodsDummy_SDAutoLayout 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDAutoLayout/SDAutoLayout-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDAutoLayout/SDAutoLayout.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SDAutoLayout 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDAutoLayout" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Realm" "${PODS_ROOT}/Headers/Public/SDAutoLayout" "${PODS_ROOT}/Headers/Public/SDWebImage" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 8 | SKIP_INSTALL = YES 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDWebImage : NSObject 3 | @end 4 | @implementation PodsDummy_SDWebImage 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SDWebImage 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaAsyncSocket" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Realm" "${PODS_ROOT}/Headers/Public/SDAutoLayout" "${PODS_ROOT}/Headers/Public/SDWebImage" 4 | OTHER_LDFLAGS = -framework "ImageIO" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IMSocketClient 2 | 自定义协议聊天,项目简介https://www.jianshu.com/p/fb0d9669815a 3 | 4 | 以下是聊天系统客户端版本记录以及功能,想要完成整个聊天系统时间是非常长的,所以我们把每个版本的功能尽量做小一点,循循渐进;当然了,肯定也会遇到很多没有想到的问题,我们一起慢慢解决 5 | 6 | 1.0.0 7 | 1:与指定服务器建立连接,要进行握手操作,握手主要是获取加密密钥 8 | 2:连接后进行登录,获取imid,现在的处理是和uid保持一致 9 | 3:登录成功后设置imid到控制中心,并启动心跳机制,后续发送数据需加上imid 10 | 4:服务器主动断开连接后要进行重连,重连间隔为5秒,重建次数为5次 11 | 12 | 1.0.1 13 | -------------------------------------------------------------------------------- /SocketIMDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SocketIMDemo.xcodeproj/project.xcworkspace/xcuserdata/mac.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/SocketIMDemo.xcodeproj/project.xcworkspace/xcuserdata/mac.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /SocketIMDemo.xcodeproj/xcuserdata/mac.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /SocketIMDemo.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | SocketIMDemo.xcscheme 8 | 9 | orderHint 10 | 6 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 047C438D202D7D0F00BB3400 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /SocketIMDemo.xcodeproj/xcuserdata/zhaolongjie.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | SocketIMDemo.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /SocketIMDemo.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /SocketIMDemo.xcworkspace/xcuserdata/mac.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/SocketIMDemo.xcworkspace/xcuserdata/mac.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /SocketIMDemo.xcworkspace/xcuserdata/zhaolongjie.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/SocketIMDemo.xcworkspace/xcuserdata/zhaolongjie.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /SocketIMDemo/AppCustoms/AppCustoms.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppCustoms.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | 应用全局配置,比如ui颜色等 13 | */ 14 | @interface AppCustoms : NSObject 15 | 16 | /** 17 | 获取AppCustoms单例对象 18 | 19 | @return AppCustoms单例对象 20 | */ 21 | + (AppCustoms *)customs; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /SocketIMDemo/AppCustoms/AppCustoms.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppCustoms.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "AppCustoms.h" 10 | 11 | /**AppCustoms单例对象*/ 12 | static AppCustoms * APP_CUSTOMS_SINGLETON; 13 | 14 | @implementation AppCustoms 15 | 16 | #pragma mark - Init 17 | 18 | - (instancetype)init { 19 | if (self = [super init]) { 20 | 21 | } 22 | return self; 23 | } 24 | 25 | #pragma mark - Public Methods 26 | 27 | + (AppCustoms *)customs { 28 | static dispatch_once_t predicate; 29 | dispatch_once( &predicate, ^{ APP_CUSTOMS_SINGLETON = [[[self class] alloc] init]; } ); 30 | return APP_CUSTOMS_SINGLETON; 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /SocketIMDemo/AppDelegate/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | /** 9 | Add new user manager zlj_TomLongJoy!!Hello Everyone 10 | */ 11 | #import 12 | 13 | @interface AppDelegate : UIResponder 14 | 15 | @property (strong, nonatomic) UIWindow *window; 16 | 17 | @end 18 | 19 | -------------------------------------------------------------------------------- /SocketIMDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "60x60", 35 | "idiom" : "iphone", 36 | "filename" : "未标题-3.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "idiom" : "iphone", 41 | "size" : "60x60", 42 | "scale" : "3x" 43 | }, 44 | { 45 | "idiom" : "ios-marketing", 46 | "size" : "1024x1024", 47 | "scale" : "1x" 48 | } 49 | ], 50 | "info" : { 51 | "version" : 1, 52 | "author" : "xcode" 53 | } 54 | } -------------------------------------------------------------------------------- /SocketIMDemo/Assets.xcassets/AppIcon.appiconset/未标题-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/SocketIMDemo/Assets.xcassets/AppIcon.appiconset/未标题-3.png -------------------------------------------------------------------------------- /SocketIMDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /SocketIMDemo/Assets.xcassets/default_image_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "未标题-3.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SocketIMDemo/Assets.xcassets/default_image_icon.imageset/未标题-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/SocketIMDemo/Assets.xcassets/default_image_icon.imageset/未标题-3.png -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/BusinessIMClass/IMSocketControl.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMSocketControl.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "IMSocketListener.h" 10 | #import "IMSocketReceiver.h" 11 | #import "IMSocketReqContext.h" 12 | 13 | /** 14 | 接收请求并发起,接收响应并转发 15 | 在这里面注册你想要监听的消息,比如user、friend、message、notifation 16 | */ 17 | @interface IMSocketControl : NSObject 18 | 19 | /**这里面存放的是所有的订阅信息 只有订阅了才会向外转发收到的消息*/ 20 | @property(strong, nonatomic,readonly) NSMutableDictionary> *registerMaps; 21 | /**这里面存放的是所有的正在执行的操作,有个定时器会一直检查还在执行的操作*/ 22 | @property(strong, nonatomic,readonly) NSMutableDictionary *operationMaps; 23 | 24 | /** 25 | 注册一个消息接受类型 cmd为:user用户登录、msg消息发送、friend关系改变、group群聊 26 | 27 | @param cmd 类型 28 | @param inter 监听者 29 | */ 30 | - (void)regeistReceiver:(NSString *)cmd interface:(id)inter; 31 | 32 | /** 33 | 开始连接 34 | 35 | @param host host 36 | @param port port 37 | @param call 连接回调 38 | @param disCall 失去连接回调 39 | */ 40 | - (void)connect:(NSString *)host port:(UInt16)port callBack:(CallBackBlock)call disconnectCallBack:(CallBackBlock)disCall; 41 | 42 | /** 43 | 断开连接 44 | */ 45 | - (void)disconnect; 46 | 47 | /** 48 | 设置当前用户唯一标识符 49 | 50 | @param imid imid 51 | */ 52 | - (void)setImId:(uint64_t)imid; 53 | 54 | /** 55 | 添加一个请求 56 | 57 | @param reqContext 请求 58 | */ 59 | - (void)addReqContext:(IMSocketReqContext *)reqContext; 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/BusinessIMClass/IMSocketModules.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMSocketModules.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "IMSocketUserHandler.h" 10 | 11 | 12 | /** 13 | 聊天模块,只添加相应的IMSocketListener,不做其他的操作 14 | */ 15 | @interface IMSocketModules : NSObject 16 | 17 | /** 18 | 开始连接服务器 19 | 20 | @param host host 21 | @param port port 22 | @param call 连接成功回调 23 | @param disCall 连接断开回调 24 | */ 25 | - (void)connect:(NSString *)host port:(UInt16)port connectCallBack:(CallBackBlock)call disconnectCallBack:(CallBackBlock)disCall; 26 | 27 | /** 28 | 断开连接 29 | */ 30 | - (void)disconnect; 31 | 32 | /** 33 | 获取用户消息监听对象 34 | 35 | @return 用户消息监听对象 36 | */ 37 | - (IMSocketUserHandler *)userHandler; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/BusinessIMClass/UserIMSocket.h: -------------------------------------------------------------------------------- 1 | // 2 | // UserIMSocket.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | /** 10 | 用户聊天总类 11 | */ 12 | @interface UserIMSocket : NSObject 13 | 14 | /** 15 | 创建UserIMSocket单例 16 | 17 | @return 单例对象 18 | */ 19 | + (instancetype)socket; 20 | 21 | /** 22 | 连接 23 | */ 24 | - (void)connect; 25 | 26 | /** 27 | 断开连接,理应断开后马上重连,因为哪个端主动断开的标志在IMSocketIO中,因为封装的逻辑并没有传到UserIMSocket中,所以我们在IMSocketControl的disconnect方法中设置了_disconnectCallBackBlock = nil,这样才实现了客户端主动断开连接不会重连的逻辑,当然这样的做法并不是很好,设计还需要再考虑 28 | */ 29 | - (void)disconnect; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/IMSocketCallBackBlock.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMSocketCallBackBlock.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #ifndef CMChatSocket_IMSocketCallBackBlock_h 10 | #define CMChatSocket_IMSocketCallBackBlock_h 11 | 12 | @class IMSocketRespAgent; 13 | 14 | /** 15 | 收到服务器的消息后,会经过各个模块处理成对应模块接收的IMSocketRespAgent对象 16 | 17 | @param resp 代理对象 18 | */ 19 | typedef void (^CallBackBlock)(IMSocketRespAgent* resp); 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/IMSocketHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMSocketHeader.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | /**发送包头部长度*/ 10 | #define DF_SOCKET_HEADER_LENGTH 16 11 | /**头部版本号*/ 12 | #define DF_SOCKET_HEADER_VERSION (0x01) 13 | /**校验码*/ 14 | #define DF_SOCKET_HEADER_MAGIC_NUM (0x20140804) 15 | 16 | /** 17 | 包头部:版本号+校验码+该包类型+包内容长度 18 | */ 19 | @interface IMSocketHeader : NSObject 20 | 21 | /**版本 现固定为0x01*/ 22 | @property (nonatomic,assign) int version; 23 | /**校验码*/ 24 | @property (nonatomic,assign) int magic_num; 25 | /**包类型*/ 26 | @property (nonatomic,assign) E_SOCKET_HEADER_CMD_TYPE command; 27 | /**body长度*/ 28 | @property (nonatomic,assign) int body_len; 29 | 30 | /** 31 | 获取Header的二进制数据 32 | 33 | @return Header的二进制数据 34 | */ 35 | - (NSData *)getHeaderData; 36 | 37 | /** 38 | Set Header的属性值 39 | 40 | @param data Header的属性值 41 | */ 42 | - (void)setProperty:(NSData *)data; 43 | 44 | @end 45 | 46 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/IMSocketListener.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMSocketListener.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "IMSocketRespAgent.h" 10 | #import "IMSocketCallBackBlock.h" 11 | 12 | /** 13 | observers中的value对象 14 | */ 15 | @interface HandlerObject : NSObject 16 | 17 | /**代理回调*/ 18 | @property (nonatomic, copy) CallBackBlock handler; 19 | 20 | @end 21 | 22 | /** 23 | 注册类型对应的该类型的监听者 24 | */ 25 | @interface IMSocketListener : NSObject 26 | 27 | /**该类型消息来了,会通知哪些观察者*/ 28 | @property (nonatomic,strong) NSMutableDictionary*> *observers; 29 | 30 | /** 31 | 添加一个类型对应的回调 32 | 33 | @param type 类型 34 | @param call 回调 35 | */ 36 | - (void)addEventListener:(NSString*)type withFunction:(CallBackBlock)call; 37 | 38 | /** 39 | 删除一个类型对应的回调 40 | 41 | @param type 类型 42 | @param call 回调 43 | */ 44 | - (void)removeEventListner:(NSString*)type withFunction:(CallBackBlock)call; 45 | 46 | /** 47 | 分发消息给该类型的所有HandlerObject对象,需要addEventListener添加对应的HandlerObject 48 | 49 | @param type 类型 50 | @param agent 分发内容 51 | */ 52 | - (void)dispach:(NSString*)type withAgent:(IMSocketRespAgent*)agent; 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/IMSocketReceiver.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMSocketReceiver.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #ifndef CMChatSocket_IMSocketReceiver_h 10 | #define CMChatSocket_IMSocketReceiver_h 11 | 12 | @class IMSocketReqContext; 13 | 14 | /** 15 | 消息接收协议 16 | */ 17 | @protocol IMSocketReceiver 18 | 19 | @required 20 | 21 | /** 22 | 该请求接收到了响应 23 | 24 | @param context 请求+响应内容 25 | */ 26 | - (void)receive:(IMSocketReqContext *)context; 27 | 28 | @end 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/IMSocketReqContext.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMSocketReqContext.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "IMSocketCallBackBlock.h" 10 | 11 | /** 12 | 传给IMSocketControl的请求对象,body根据cmd、sub_cmd、header_cmd设置不同的值 13 | 同时会根据服务器返回的数据修改请求是的IMSocketControl对象的部分值,并向外传给IMSocketListener对象 14 | 比如code为设置为服务器的响应结果,body设置为服务器的返回数据,type会根据情况改变 15 | */ 16 | @interface IMSocketReqContext : NSObject 17 | 18 | @property(nonatomic, strong) CallBackBlock handler; 19 | /**错误码*/ 20 | @property(nonatomic, assign) E_SOCKET_ERROR code; 21 | /**离线、在线、漫游消息 只在cmd为message时有用,其他地方暂时没用到*/ 22 | @property(nonatomic, assign) E_MSG_TYPE type; 23 | /**发送失败后重试的次数(10s后重试) 超过两次后设置code为E_SOCKET_ERROR_TIME_OUT*/ 24 | @property(nonatomic, assign) int res; 25 | /**区分心跳、通用、登录、退出等*/ 26 | @property(nonatomic, assign) E_SOCKET_HEADER_CMD_TYPE header_cmd; 27 | /**区分user、group、friend、notifation等*/ 28 | @property(nonatomic, strong) NSString *cmd; 29 | /**例如user区分login、logout、setinfo等*/ 30 | @property(nonatomic, strong) NSString *sub_cmd; 31 | /**请求添加的事件*/ 32 | @property(nonatomic, strong) NSDate *time; 33 | /**内容 json格式字符串 如cmd为user、sub_cmd为login,请求时则body为UserLoginReq对象的json格式字符串 响应时则body为UserLoginResp对象的json格式字符串*/ 34 | @property(nonatomic, strong) NSString *body; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/IMSocketReqContext.m: -------------------------------------------------------------------------------- 1 | // 2 | // IMSocketReqContext.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "IMSocketReqContext.h" 10 | 11 | @implementation IMSocketReqContext 12 | 13 | -(instancetype)init { 14 | self = [super init]; 15 | if(self){ 16 | _res = 0; 17 | } 18 | return self; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/IMSocketRespAgent.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMSocketRespAgent.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | /** 10 | 收到服务器的数据后,由IMSocketUserHandler结合对应的IMSocketReqContext处理后成为该对象向外转发 11 | */ 12 | @interface IMSocketRespAgent : NSObject 13 | 14 | /**错误码*/ 15 | @property(nonatomic, assign) E_SOCKET_ERROR code; 16 | /**离线、在线、漫游消息*/ 17 | @property(nonatomic, assign) E_MSG_TYPE type; 18 | /**区分user、group、friend、notifation等*/ 19 | @property(nonatomic, strong) NSString *cmd; 20 | /**例如user区分login、logout、setinfo等*/ 21 | @property(nonatomic, strong) NSString *sub_cmd; 22 | /**例如user的login则是UserLoginResp对象*/ 23 | @property(nonatomic, strong) NSObject *content; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/IMSocketRespAgent.m: -------------------------------------------------------------------------------- 1 | // 2 | // IMSocketRespAgent.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "IMSocketRespAgent.h" 10 | 11 | @implementation IMSocketRespAgent 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/ProtocolClientReq.h: -------------------------------------------------------------------------------- 1 | // 2 | // ProtocolClientReq.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | IMSocketControl收到一个IMSocketReqContext后会构建一个ProtocolClientReq对象,并把ProtocolClientReq对象转换成NSData传给SocketIO进行传输,body是IMSocketReqContext的body 13 | */ 14 | @interface ProtocolClientReq : NSObject 15 | 16 | /**请求唯一标识符*/ 17 | @property(nonatomic, assign) int seq; 18 | /**区分user、group、friend、notifation等*/ 19 | @property(nonatomic, strong) NSString *cmd; 20 | /**例如user区分login、logout、setinfo等*/ 21 | @property(nonatomic, strong) NSString *sub_cmd; 22 | /**应用版本号*/ 23 | @property(nonatomic, strong) NSString *version; 24 | /**用户唯一标识符*/ 25 | @property(nonatomic, assign) int64_t imid; 26 | /**客户端类型*/ 27 | @property(nonatomic, assign) E_SOCKET_CLIENT_TYPE source_type; 28 | /**内容 json格式字符串 如cmd为user、sub_cmd为login,则body为UserLoginReq对象的json格式字符串*/ 29 | @property(nonatomic, strong) NSString *body; 30 | 31 | @end 32 | 33 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/ProtocolClientReq.m: -------------------------------------------------------------------------------- 1 | // 2 | // ProtocolClientReq.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "ProtocolClientReq.h" 10 | 11 | @implementation ProtocolClientReq 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/ProtocolServerResp.h: -------------------------------------------------------------------------------- 1 | // 2 | // ProtocolServerResp.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | 服务器返回的data可以转变成ProtocolServerResp对象 13 | */ 14 | @interface ProtocolServerResp : NSObject 15 | 16 | /**请求唯一标识符,和ProtocolClientReq的seq保持一致返回给客户端*/ 17 | @property(nonatomic, assign) int seq; 18 | /**服务器返回的包类型*/ 19 | @property(nonatomic, assign) E_SERVER_PACK_TYPE type; 20 | /**错误码*/ 21 | @property(nonatomic, assign) E_SOCKET_ERROR code; 22 | /**区分user、group、friend、notifation等*/ 23 | @property(nonatomic, strong) NSString *cmd; 24 | /**例如user区分login、logout、setinfo等*/ 25 | @property(nonatomic, strong) NSString *sub_cmd; 26 | /**内容 json格式字符串 如cmd为user、sub_cmd为login,则body为UserLoginReq对象的json格式字符串*/ 27 | @property(nonatomic, strong) NSString *body; 28 | 29 | @end 30 | 31 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/ImService/ToolIMClass/ProtocolServerResp.m: -------------------------------------------------------------------------------- 1 | // 2 | // ProtocolServerResp.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "ProtocolServerResp.h" 10 | 11 | @implementation ProtocolServerResp 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SocketIMDemo/InterfaceService/InterfaceService.h: -------------------------------------------------------------------------------- 1 | // 2 | // InterfaceService.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #ifndef InterfaceService_h 10 | #define InterfaceService_h 11 | 12 | #import "IMSocketDefines.h" 13 | 14 | #endif /* InterfaceService_h */ 15 | -------------------------------------------------------------------------------- /SocketIMDemo/ModelManager/Models/Chater.h: -------------------------------------------------------------------------------- 1 | // 2 | // Chater.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | /** 10 | 聊天体系中的用户 11 | */ 12 | @interface Chater : RLMObject 13 | 14 | /**唯一标识符,和用户体系uid一样*/ 15 | @property (nonatomic, assign) int64_t imid; 16 | /**昵称*/ 17 | @property (nonatomic, strong) NSString *nick; 18 | /**头像地址*/ 19 | @property (nonatomic, strong) NSString *avatar; 20 | 21 | @end 22 | 23 | -------------------------------------------------------------------------------- /SocketIMDemo/ModelManager/Models/Chater.m: -------------------------------------------------------------------------------- 1 | // 2 | // Chater.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "Chater.h" 10 | 11 | @implementation Chater 12 | 13 | #pragma mark -- Init Methods 14 | 15 | #pragma mark -- Function Methods 16 | 17 | #pragma mark -- Private Methods 18 | 19 | + (NSString*)primaryKey { 20 | return @"imid"; 21 | } 22 | 23 | #pragma mark -- Public Methods 24 | 25 | @end 26 | 27 | -------------------------------------------------------------------------------- /SocketIMDemo/ModelManager/Models/User.h: -------------------------------------------------------------------------------- 1 | // 2 | // User.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | 应用体系中的用户 13 | */ 14 | @interface User : RLMObject 15 | 16 | /**uid*/ 17 | @property (nonatomic, assign) int uid; 18 | /**昵称*/ 19 | @property (nonatomic, strong) NSString *nick; 20 | /**头像*/ 21 | @property (nonatomic, strong) NSString *avatar; 22 | 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /SocketIMDemo/ModelManager/Models/User.m: -------------------------------------------------------------------------------- 1 | // 2 | // User.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "User.h" 10 | 11 | @implementation User 12 | 13 | + (NSString*)primaryKey { 14 | return @"uid"; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /SocketIMDemo/ModelManager/UserManager/UserManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // UseManager.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "User.h" 10 | #import "Chater.h" 11 | 12 | /** 13 | 数据库管理器,所有的数据操作通过本类完成 14 | */ 15 | @interface UserManager : NSObject 16 | 17 | /**当前登录的用户*/ 18 | @property (nonatomic, strong) User *user; 19 | 20 | /** 21 | 创建单例方法 22 | 23 | @return 单例对象 24 | */ 25 | + (instancetype)manager; 26 | 27 | /** 28 | 更新当前登录用户信息 29 | 30 | @param user 最新的用户信息 31 | */ 32 | - (void)updateCurrUser:(User*)user; 33 | 34 | /** 35 | 更新当前应用体系中的所有用户 36 | 37 | @param users 用户 38 | */ 39 | - (void)updateUsers:(NSMutableArray*)users; 40 | 41 | /** 42 | 获取所有的应用体系中的用户 43 | 44 | @return 用户 45 | */ 46 | - (NSMutableArray*)allUsers; 47 | 48 | /** 49 | 更新一个聊天体系中的用户 50 | 51 | @param chater 聊天体系中的用户 52 | */ 53 | - (void)updateChater:(Chater*)chater; 54 | 55 | /** 56 | 获取指定imid中的用户,肯定是能获取到的,因为我们会先进行updateChater操作 57 | 58 | @return 用户 59 | */ 60 | - (Chater*)chaterWithImid:(int64_t)imid; 61 | 62 | @end 63 | 64 | -------------------------------------------------------------------------------- /SocketIMDemo/Supporting Files/PrefixHeader.pch: -------------------------------------------------------------------------------- 1 | // 2 | // PrefixHeader.pch 3 | // SocketIMDemo 4 | // 5 | // Created by Mac on 2018/2/23. 6 | // Copyright © 2018年 Mac. All rights reserved. 7 | // 8 | 9 | #ifndef PrefixHeader_pch 10 | #define PrefixHeader_pch 11 | 12 | // Include any system framework and library headers here that should be included in all compilation units. 13 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 14 | 15 | @import UIKit; 16 | 17 | #import "Utikles.h" 18 | #import "AppCustoms.h" 19 | #import "InterfaceService.h" 20 | 21 | #endif /* PrefixHeader_pch */ 22 | -------------------------------------------------------------------------------- /SocketIMDemo/Supporting Files/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // SocketIMDemo 4 | // 5 | // Created by Mac on 2018/2/9. 6 | // Copyright © 2018年 Mac. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /SocketIMDemo/Supporting Files/readme.md: -------------------------------------------------------------------------------- 1 | 以下是聊天系统客户端版本记录以及功能 2 | 3 | 1.0.0 4 | 1:与服务器连接需进行握手确认 5 | 2:伪造3个用户(应用体系和聊天体系)展示在聊天好友列表中,用户在应用体系和聊天体系中的id定为一致,Chater为聊天体系中的用户,User为应用体系中的用户 6 | 3:连接成功后需进行登录操作,登录使用3个用户某的某一个 7 | 4:先不考虑任何消息的缓存 8 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/CMDeviceInfo/CMDeviceInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // CMDeviceInfo.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #ifndef MAIN_SCREEN_WIDTH 10 | #define MAIN_SCREEN_WIDTH [CMDeviceInfo mainScreenWidth] 11 | #endif 12 | 13 | #ifndef MAIN_SCREEN_HEIGHT 14 | #define MAIN_SCREEN_HEIGHT [CMDeviceInfo mainScreenHeight] 15 | #endif 16 | 17 | #ifndef MAIN_SCREEN_WIDTH_SCALE 18 | #define MAIN_SCREEN_WIDTH_SCALE (MAIN_SCREEN_WIDTH / 375.0) 19 | #endif 20 | 21 | #ifndef MAIN_SCREEN_HEIGHT_SCALE 22 | #define MAIN_SCREEN_HEIGHT_SCALE (MAIN_SCREEN_HEIGHT / 667.0) 23 | #endif 24 | 25 | @interface CMDeviceInfo : NSObject 26 | 27 | /** 28 | 获取屏幕宽度 29 | 30 | @return 屏幕宽度 31 | */ 32 | + (CGFloat)mainScreenWidth; 33 | 34 | /** 35 | 获取屏幕高度 36 | 37 | @return 屏幕高度 38 | */ 39 | + (CGFloat)mainScreenHeight; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/CMDeviceInfo/CMDeviceInfo.m: -------------------------------------------------------------------------------- 1 | // 2 | // CMDeviceInfo.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "CMDeviceInfo.h" 10 | #import "sys/utsname.h" 11 | #import "sys/utsname.h" 12 | 13 | @implementation CMDeviceInfo 14 | 15 | #pragma mark - Public methods 16 | 17 | + (CGFloat)mainScreenWidth { 18 | return [UIScreen mainScreen].bounds.size.width; 19 | } 20 | 21 | + (CGFloat)mainScreenHeight { 22 | return [UIScreen mainScreen].bounds.size.height; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/Category/NSString+Category.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+isBlank.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | @interface NSString (isBlank) 10 | 11 | /** 12 | 字符串是否为空 13 | 14 | @param str 待检测的字符串 15 | @return 是否为空字符串 16 | */ 17 | + (BOOL)isBlank:(NSString*)str; 18 | 19 | @end 20 | 21 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/Category/NSString+Category.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+isBlank.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "NSString+Category.h" 10 | 11 | @implementation NSString (isBlank) 12 | 13 | #pragma mark -- Init Methods 14 | 15 | #pragma mark -- Function Methods 16 | 17 | #pragma mark -- Private Methods 18 | 19 | #pragma mark -- Public Methods 20 | 21 | + (BOOL)isBlank:(NSString*)str { 22 | if (str == nil || str == NULL) { 23 | return YES; 24 | } 25 | //该对象属于NSNull族 26 | if ([str isKindOfClass:[NSNull class]]) { 27 | return YES; 28 | } 29 | //字符串全是空白 30 | if ([[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0) { 31 | return YES; 32 | } 33 | return NO; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/Category/UIColor+FlatUI.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+FlatUI.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | @interface UIColor (FlatUI) 10 | 11 | /** 12 | 用16进制字符串构造UIColor对象 13 | 14 | @param hexString 3位或者6位16进制字符串,可以不加# 15 | @return UIColor对象 16 | */ 17 | + (UIColor *)colorFromHexCode:(NSString *)hexString; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/Category/UIImage+Category.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+scale.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | @interface UIImage (scale) 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/Category/UIImage+Category.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+scale.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "UIImage+Category.h" 10 | 11 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/ThirdParty/Realm+JSON/MCJSONDateTransformer.h: -------------------------------------------------------------------------------- 1 | // 2 | // MCJSONDateTransformer.h 3 | // RealmJSONDemo 4 | // 5 | // Created by Matthew Cheok on 27/7/14. 6 | // Copyright (c) 2014 Matthew Cheok. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | extern NSString* const MCJSONDateTimeTransformerName; 12 | extern NSString* const MCJSONDateTimeMillisecondTransformerName; 13 | extern NSString* const MCJSONDateOnlyTransformerName; 14 | 15 | typedef NS_ENUM(NSInteger, MCJSONDateTransformerStyle) { 16 | MCJSONDateTransformerStyleDateTime = 0, 17 | MCJSONDateTransformerStyleDateTimeMillisecond, 18 | MCJSONDateTransformerStyleDateOnly 19 | }; 20 | 21 | @interface MCJSONDateTransformer : NSValueTransformer 22 | 23 | + (instancetype)valueTransformerWithDateStyle:(MCJSONDateTransformerStyle)style; 24 | - (instancetype)initWithDateStyle:(MCJSONDateTransformerStyle)style; 25 | + (instancetype)valueTransformerWithDateFormat:(NSString *)dateFormat; 26 | - (instancetype)initWithDateFormat:(NSString *)dateFormat; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/ThirdParty/Realm+JSON/MCJSONNonNullStringTransformer.h: -------------------------------------------------------------------------------- 1 | // 2 | // MCJSONNonNullStringTransformer.h 3 | // Pods 4 | // 5 | // Created by Matthew Cheok on 23/5/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface MCJSONNonNullStringTransformer : NSValueTransformer 12 | 13 | + (instancetype)valueTransformer; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/ThirdParty/Realm+JSON/MCJSONNonNullStringTransformer.m: -------------------------------------------------------------------------------- 1 | // 2 | // MCJSONNonNullStringTransformer.m 3 | // Pods 4 | // 5 | // Created by Matthew Cheok on 23/5/15. 6 | // 7 | // 8 | 9 | #import "MCJSONNonNullStringTransformer.h" 10 | 11 | @implementation MCJSONNonNullStringTransformer 12 | 13 | + (instancetype)valueTransformer { 14 | return [[self alloc] init]; 15 | } 16 | 17 | + (Class)transformedValueClass { 18 | return [NSString class]; 19 | } 20 | 21 | + (BOOL)allowsReverseTransformation { 22 | return YES; 23 | } 24 | 25 | - (id)transformedValue:(id)value { 26 | if (value && ![value isKindOfClass:[NSNull class]]) { 27 | return value; 28 | } 29 | else { 30 | return @""; 31 | } 32 | } 33 | 34 | - (id)reverseTransformedValue:(id)value { 35 | return value; 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/ThirdParty/Realm+JSON/MCJSONPrimaryKeyTransformer.h: -------------------------------------------------------------------------------- 1 | // 2 | // MCJSONPrimaryKeyTransformer.h 3 | // RealmJSON 4 | // 5 | // Created by Anton Gaenko on 14.12.14. 6 | // Copyright (c) 2014 Anton Gaenko. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MCJSONPrimaryKeyTransformer : NSValueTransformer 13 | 14 | // it should be RLMObject subclass 15 | + (instancetype)valueTransformerWithRealmClass:(Class)realmClass; 16 | - (instancetype)initWithRealmClass:(Class)realmClass; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/ThirdParty/Realm+JSON/MCJSONPrimaryKeyTransformer.m: -------------------------------------------------------------------------------- 1 | // 2 | // MCJSONPrimaryKeyTransformer.m 3 | // RealmJSON 4 | // 5 | // Created by Anton Gaenko on 14.12.14. 6 | // Copyright (c) 2014 Anton Gaenko. All rights reserved. 7 | // 8 | 9 | #import "MCJSONPrimaryKeyTransformer.h" 10 | 11 | @interface MCJSONPrimaryKeyTransformer () 12 | 13 | @property (nonatomic, assign) Class realmClassToMap; 14 | 15 | @end 16 | 17 | @implementation MCJSONPrimaryKeyTransformer 18 | 19 | + (instancetype)valueTransformerWithRealmClass:(Class)realmClass { 20 | return [[self alloc] initWithRealmClass:realmClass]; 21 | } 22 | 23 | - (instancetype)initWithRealmClass:(Class)realmClass { 24 | self = [super init]; 25 | if (self) { 26 | // it should be RLMObject subclass 27 | BOOL isRlmObjectSubclass = [realmClass respondsToSelector:@selector(isSubclassOfClass:)] && 28 | [realmClass isSubclassOfClass:[RLMObject class]]; 29 | 30 | if (isRlmObjectSubclass) { 31 | self.realmClassToMap = realmClass; 32 | } 33 | 34 | } 35 | return self; 36 | } 37 | 38 | - (id)transformedValue:(NSString*)value { 39 | if (value && self.realmClassToMap) { 40 | return [self.realmClassToMap performSelector:@selector(objectForPrimaryKey:) withObject:value]; 41 | } 42 | 43 | return nil; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/ThirdParty/Realm+JSON/MCJSONValueTransformer.h: -------------------------------------------------------------------------------- 1 | // 2 | // MCJSONValueTransformer.h 3 | // RealmJSONDemo 4 | // 5 | // Created by Matthew Cheok on 27/7/14. 6 | // Copyright (c) 2014 Matthew Cheok. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MCJSONValueTransformer : NSValueTransformer 12 | 13 | + (instancetype)valueTransformerWithMappingDictionary:(NSDictionary *)dictionary; 14 | - (instancetype)initWithMappingDictionary:(NSDictionary *)dictionary; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/ThirdParty/Realm+JSON/MCJSONValueTransformer.m: -------------------------------------------------------------------------------- 1 | // 2 | // MCJSONValueTransformer.m 3 | // RealmJSONDemo 4 | // 5 | // Created by Matthew Cheok on 27/7/14. 6 | // Copyright (c) 2014 Matthew Cheok. All rights reserved. 7 | // 8 | 9 | #import "MCJSONValueTransformer.h" 10 | 11 | @interface MCJSONValueTransformer () 12 | 13 | @property (nonatomic, strong) NSDictionary *mappingDictionary; 14 | 15 | @end 16 | 17 | @implementation MCJSONValueTransformer 18 | 19 | + (instancetype)valueTransformerWithMappingDictionary:(NSDictionary *)dictionary { 20 | return [[self alloc] initWithMappingDictionary:dictionary]; 21 | } 22 | 23 | - (instancetype)initWithMappingDictionary:(NSDictionary *)dictionary { 24 | self = [super init]; 25 | if (self) { 26 | _mappingDictionary = dictionary; 27 | } 28 | return self; 29 | } 30 | 31 | + (BOOL)allowsReverseTransformation { 32 | return YES; 33 | } 34 | 35 | - (id)transformedValue:(id)value { 36 | return self.mappingDictionary[value]; 37 | } 38 | 39 | - (id)reverseTransformedValue:(id)value { 40 | return [[self.mappingDictionary allKeysForObject:value] firstObject]; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/ThirdParty/Realm+JSON/RLMObject+Copying.h: -------------------------------------------------------------------------------- 1 | // 2 | // RLMObject+Copying.h 3 | // RealmJSONDemo 4 | // 5 | // Created by Matthew Cheok on 26/8/14. 6 | // Copyright (c) 2014 Getting Real. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface RLMObject (Copying) 12 | 13 | - (instancetype)shallowCopy; 14 | - (instancetype)deepCopy; 15 | - (void)mergePropertiesFromObject:(id)object; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/ThirdParty/Realm+JSON/RLMObject+JSON.h: -------------------------------------------------------------------------------- 1 | // 2 | // RLMObject+JSON.h 3 | // RealmJSONDemo 4 | // 5 | // Created by Matthew Cheok on 27/7/14. 6 | // Copyright (c) 2014 Matthew Cheok. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MCJSONDateTransformer.h" 11 | #import "MCJSONValueTransformer.h" 12 | 13 | @interface RLMObject (JSON) 14 | 15 | + (NSArray *)createOrUpdateInRealm:(RLMRealm *)realm withJSONArray:(NSArray *)array; 16 | + (instancetype)createOrUpdateInRealm:(RLMRealm *)realm withJSONDictionary:(NSDictionary *)dictionary; 17 | + (instancetype)objectInRealm:(RLMRealm *)realm withPrimaryKeyValue:(id)primaryKeyValue; 18 | 19 | - (instancetype)initWithJSONDictionary:(NSDictionary *)dictionary; 20 | - (NSDictionary *)JSONDictionary; 21 | 22 | - (id)primaryKeyValue; 23 | + (id)primaryKeyValueFromJSONDictionary:(NSDictionary *)dictionary; 24 | 25 | - (void)performInTransaction:(void (^)())transaction; 26 | - (void)removeFromRealm; 27 | //值是不是一样 28 | + (BOOL)values:(RLMObject*)object1 isEqual:(RLMObject*)object2; 29 | + (BOOL)arrayValues:(NSArray*)array1 isEqual:(NSArray*)array2; 30 | 31 | @end 32 | 33 | @interface RLMArray (JSON) 34 | 35 | - (NSArray *)NSArray; 36 | - (NSArray *)JSONArray; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /SocketIMDemo/Utikles/Utikles.h: -------------------------------------------------------------------------------- 1 | // 2 | // Utikles.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #ifndef Utikles_h 10 | #define Utikles_h 11 | 12 | #import 13 | #import 14 | #import 15 | #import 16 | #import 17 | 18 | #import "NSString+Category.h" 19 | #import "RLMObject+Copying.h" 20 | #import "UIColor+FlatUI.h" 21 | 22 | #import "CMDeviceInfo.h" 23 | 24 | #endif /* Utikles_h */ 25 | -------------------------------------------------------------------------------- /SocketIMDemo/ViewControllers/ChatFriendController/ChatFriendController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChatFriendController.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | 我的好友列表 13 | */ 14 | @interface ChatFriendController : UIViewController 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /SocketIMDemo/ViewControllers/ChatFriendController/ChatFriendController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ChatFriendController.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "ChatFriendController.h" 10 | 11 | @interface ChatFriendController () 12 | 13 | @end 14 | 15 | @implementation ChatFriendController 16 | 17 | #pragma mark -- Init Methods 18 | 19 | - (instancetype)init { 20 | if(self = [super init]) { 21 | self.navigationItem.title = @"好友"; 22 | } 23 | return self; 24 | } 25 | 26 | #pragma mark -- Life Cycle 27 | 28 | - (void)viewDidLoad { 29 | [super viewDidLoad]; 30 | self.view.backgroundColor = [UIColor whiteColor]; 31 | // Do any additional setup after loading the view. 32 | } 33 | 34 | #pragma mark -- Class Private Methods 35 | 36 | #pragma mark -- Class Public Methods 37 | 38 | #pragma mark -- Function Private Methods 39 | 40 | #pragma mark -- Function Public Methods 41 | 42 | #pragma mark -- Instance Private Methods 43 | 44 | #pragma mark -- Instance Public Methods 45 | @end 46 | -------------------------------------------------------------------------------- /SocketIMDemo/ViewControllers/ChatListController/ChatListController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChatListController.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | 会话列表 13 | */ 14 | @interface ChatListController : UIViewController 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /SocketIMDemo/ViewControllers/ChatListController/ChatListController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ChatListController.m 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import "ChatListController.h" 10 | 11 | @interface ChatListController () 12 | 13 | @end 14 | 15 | @implementation ChatListController 16 | 17 | #pragma mark -- Init Methods 18 | 19 | - (instancetype)init { 20 | if(self = [super init]) { 21 | self.navigationItem.title = @"会话"; 22 | } 23 | return self; 24 | } 25 | 26 | #pragma mark -- Life Cycle 27 | 28 | - (void)viewDidLoad { 29 | [super viewDidLoad]; 30 | self.view.backgroundColor = [UIColor whiteColor]; 31 | // Do any additional setup after loading the view. 32 | } 33 | 34 | #pragma mark -- Class Private Methods 35 | 36 | #pragma mark -- Class Public Methods 37 | 38 | #pragma mark -- Function Private Methods 39 | 40 | #pragma mark -- Function Public Methods 41 | 42 | #pragma mark -- Instance Private Methods 43 | 44 | #pragma mark -- Instance Public Methods 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /SocketIMDemo/ViewControllers/ChatMineController/ChatMineController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChatMineController.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | 我的详细信息界面 13 | */ 14 | @interface ChatMineController : UIViewController 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /SocketIMDemo/ViewControllers/ChatMineController/ChatMineView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChatMineView.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "ChatMineViewTag.h" 12 | 13 | /** 14 | 我界面视图部分 15 | */ 16 | @interface ChatMineView : UIView 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /SocketIMDemo/ViewControllers/ChatMineController/ChatMineViewTag.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChatMineViewTag.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #ifndef ChatMineViewTag_h 10 | #define ChatMineViewTag_h 11 | 12 | /**用户头像*/ 13 | static NSUInteger USER_AVATER_IMAGEVIEW_TAG = 3000; 14 | /**用户名字*/ 15 | static NSUInteger USER_NAME_LABEL_TAG = 3001; 16 | 17 | #endif /* ChatMineViewTag_h */ 18 | -------------------------------------------------------------------------------- /SocketIMDemo/ViewControllers/MainViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MainViewController.h 3 | // SocketIMDemo 4 | // 5 | // Created by 李勇 on 18/3/15. 6 | // Copyright (c) 2018年李勇. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MainViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SocketIMDemo/iOS代码规范文档.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheBloodElf/IMSocketClient/07cabb9306d7b114d846cd963b443f9f508feebc/SocketIMDemo/iOS代码规范文档.pdf -------------------------------------------------------------------------------- /SocketIMDemoTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /SocketIMDemoTests/SocketIMDemoTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // SocketIMDemoTests.m 3 | // SocketIMDemoTests 4 | // 5 | // Created by Mac on 2018/3/21. 6 | // Copyright © 2018年 Mac. All rights reserved. 7 | // 8 | 9 | @import XCTest; 10 | 11 | @interface SocketIMDemoTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation SocketIMDemoTests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | // Put setup code here. This method is called before the invocation of each test method in the class. 20 | } 21 | 22 | - (void)tearDown { 23 | // Put teardown code here. This method is called after the invocation of each test method in the class. 24 | [super tearDown]; 25 | } 26 | 27 | - (void)testExample { 28 | // This is an example of a functional test case. 29 | // Use XCTAssert and related functions to verify your tests produce the correct results. 30 | } 31 | 32 | - (void)testPerformanceExample { 33 | // This is an example of a performance test case. 34 | [self measureBlock:^{ 35 | // Put the code you want to measure the time of here. 36 | }]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /SocketIMDemoTests/Utikles/NSStringCategoryTest.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSStringCategoryTest.m 3 | // SocketIMDemoTests 4 | // 5 | // Created by Mac on 2018/3/21. 6 | // Copyright © 2018年 Mac. All rights reserved. 7 | // 8 | 9 | @import XCTest; 10 | 11 | #import "NSString+Category.h" 12 | 13 | /** 14 | NSString+Category类单元测试 15 | */ 16 | @interface NSStringCategoryTest : XCTestCase 17 | 18 | @end 19 | 20 | @implementation NSStringCategoryTest 21 | 22 | - (void)setUp { 23 | [super setUp]; 24 | // Put setup code here. This method is called before the invocation of each test method in the class. 25 | } 26 | 27 | - (void)tearDown { 28 | // Put teardown code here. This method is called after the invocation of each test method in the class. 29 | [super tearDown]; 30 | } 31 | 32 | - (void)testExample { 33 | // This is an example of a functional test case. 34 | // Use XCTAssert and related functions to verify your tests produce the correct results. 35 | //正例判断 36 | XCTAssertEqual([NSString isBlank:@"hello"], NO); 37 | 38 | //反例判断 39 | XCTAssertEqual([NSString isBlank:nil], YES); 40 | XCTAssertEqual([NSString isBlank:NULL], YES); 41 | XCTAssertEqual([NSString isBlank:@""], YES); 42 | XCTAssertEqual([NSString isBlank:@" "], YES); 43 | } 44 | 45 | - (void)testPerformanceExample { 46 | // This is an example of a performance test case. 47 | [self measureBlock:^{ 48 | // Put the code you want to measure the time of here. 49 | }]; 50 | } 51 | 52 | @end 53 | --------------------------------------------------------------------------------