iOS 开发使用OC的奇淫技巧
2017-03-06 17:27
274 查看
实现快速变更类名,而不需要更改文件名
#define ABC(x) ModuleName##x // ##符号是将参数x作为字符串与 ##符号前面的字符串拼接在一起转成一个字符串
#define MyPrint(x) std::cout << #x << " is " << x <<std::endl; // #符号会将跟在后面的参数转成字符串,相当与在参数x上加上"",形成"x"
class ABC(class1) {
public:
ABC(class1)(std::string name) {
this->s_name = name;
}
void printInfo();
private:
std::string s_name;
};
void ABC(class1)::printInfo() {
std::cout << "My name is " << s_name << std::endl;
}
ABC(class1) test1 = ABC(class1)("haha");
test1.printInfo();
int i_num = 1021;
MyPrint(i_num)
- (instancetype)initWithName:(NSString *)name age:(NSUInteger)age NS_DESIGNATED_INITIALIZER;
NS_DESIGNATED_INITIALIZER,将方法指定为初始化的方法
- (instancetype)init NS_UNAVAILABLE;NS_UNAVAILABLE将方法注释为不可用,编译器会在编译时报错,且Xcode智能提示不会给出提示
- (void)method1:(NSString *)p1 __deprecated;__deprecated
将方法提示已经为不推荐使用
#if __has_feature(objc_arc)- (void)methodWithARC;
#else
- (void)methodNoARC;
#endif
__has_feature(arg)
根据整个工程中是不是才有某种编译特性决定返回true or false,通常参数使用objc_arc
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
// code //
用来消除因为方法被标记为__deprecated,而带来的编译警告
#pragma clang diagnostic pop
循环引用
"-Warc-retain-cycles"
未使用变量
"-Wunused-variable"
指针类型不兼容
"-Wincompatible-pointer-types"
根据对应平台的操作系统版本进行条件编译
#if __IPHONE_OS_VERSION_MAX_ALLOWED(AvailabilityInternal.h) >= __IPHONE_10_0(Availability.h,系统版本存在的头文件)#import <UserNotifications/UserNotifications.h>
#endif
备注:关于更多iOS 使用OC编码使用的宏,可以查阅:
异常宏:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSException.h
运行时宏:(一般是用来改变编译条件)
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSObjCRuntime.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/TargetConditionals.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h
相关文章推荐
- 【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;
- 【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;
- 使用Xamarin开发iOS技巧 - 序列化本地数据
- iOS开发UI篇—IOS开发中Xcode的一些使用技巧
- IOS开发之NSLog使用技巧
- [iOS开发必备技巧之]使用IB定制UITableViewCell
- iOS开发OC基础:OC属性的一些概念和基本使用
- iOS开发OC基础:NSNumber对象方法的使用
- iOS开发-Xcode使用技巧汇总(持续更新)
- iOS开发技巧:使用Objective-C创建UUID
- iOS开发:XIB使用技巧总结
- iOS 使用Interface Builder开发界面入门与技巧
- iOS开发技巧(系列十七:使用Xcode DEBUG模式和RELEASE模式)
- 【Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;
- 【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;
- iOS开发中使用OCUnit进行单元测试
- iOS开发:NSLog使用技巧
- IOS开发笔记(11)IOS开发之NSLog使用技巧
- 【Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;
- iOS开发OC基础:OC集合NSSet、NSMutableSet以及NSCountedSet的基本方法的使用