赞
踩
int double float char
int *pl
BOOL
类型:可以存储YES
或者NO
Boolean
:存储true
或者flase
class
类型id
类型:万能指针nil
与NULL
在语义上等价SEL
方法选择器block
代码段#import
是#include
指令的增强版,预处理指令printf
函数的增强版@
,最后加\n
会自动失效 NSlog(@"hello!")
float f1 = 12.12f;
NSlog(@"this is %f",f1)
%p
打印指针的值%@
打印指针对应的值,输出的格式:<对象所属的类名:对象的地址>NSLog%@
方法调用传入对象的description的方法,拿到该方法的返回值,这个返回值是一个字符串,将其输出OC
对象都有这个方法 #pragma mark 分组名
#pragma mark
#pragma mark - 分组名
.h
头文件:写类的声明,需要引入Foundation
框架.m
实现文件:写上类的实现,引入该模块.h
头文件NewFile Cocoa class
可以自动生成模块文件(两个) @try { // 不能捕获C语言的错误
// 可能发生错误的代码
} @catch(NSException *ex) {
// 错误时执行该代码,输出ex为异常原因
} @finally {
// 都要执行
}
将长类型定义为段类型,也可以把长的
block
类型定义为短类型
typedef 返回值类型 (^新类型)(参数列表);
typedef void (^NewType)();
NewType block1;
typedef int()(^NewType2)(int num1,int num2);
NewType2 block2;
typedef enum {
CZMessageTypeMe = 0;
CZMessageTypeOther = 1;
}CZMessageType;
@property(nonatomic, assign) CZMessageType type;
switch (state) {
case 0:
NSLog(@"未发送");
break;
case 1:
NSLog(@"发送中");
break;
case 2:
NSLog(@"已发送");
break;
}
千万不要忽略了头件的中的
#ifndef
,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include
了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突
还是把头文件的内容都放在#ifndef
和#endif
中吧,不管你的头文件会不会被多个文件引用,你都要加上这个
#ifndef x
//先测试x是否被宏定义过
#define x
//如果没有宏定义下面就宏定义x并编译下面的语句
...
#endif
//如果已经定义了则编译#endif后面的语句
#ifdef __OBJC__
//判断是否为OC代码
#endif
NULL
空地址nil
空对象[NSNull null]
数组中可以存储空值断言(
assertion
)是指在开发期间使用的、让程序在运行时进行自检的代码
NSAssert(myName != nil, @"名字不能为空!");
NSLog(@"My name is %@.",myName);
// 如果myName为空,则输出名字不能为空!,并报错
NSLog(@"%s",__func__); // 输出调用该语句的对象和函数
if (@available(iOS 15.0, *)) {
//版本为ios15
} else {
}
//返回值为UICollectionViewCell或其子类
- (__kindof UICollectionViewCell *)collectionView {
}
//元素为UIView本身或其子类
@property (nonatomic, strong) NSArray<__kindof UIView *> *viewCollection;
如果同时重写一个属性的get
和set
方法,需要用到@synthesize
@interface MyClass : NSObject @property (nonatomic, copy) NSString *name; @end @implementation MyClass @synthesize name = _name; - (void)setName:(NSString *)name { // 在这里重写setter方法,可以对传入的name进行一些自定义处理 _name = [NSString stringWithFormat:@"My name is %@", name]; } - (NSString *)name { // 在这里重写getter方法,可以对_name进行一些自定义处理 return _name; } @end
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。