A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huguozhang 中级黑马   /  2015-7-16 02:21  /  697 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 huguozhang 于 2015-7-16 02:27 编辑

Objective-C语法:
一:对象声明语法:类名 * 对象名 = [[类名 alloc] init]
  [对象名 release] //释放对象的实例
  注:alloc是NSObject的类方法,init是实现类的初始化方法
二:类
  @interface MyClass:NSObject //接口
  {
      int count;
      id data;
      NSString * name;//变量
  }
  - (NSString *) getName;//方法
  - (void)setName :(NSString *)name
  + (float)classMethod:(float *)Method1 keyword :int) Method2
  @end
  @implementation MyClass //实现
  - (NSString)getName
  {
      return @"";
  }
  @end
三:方法
声明:
+/-(返回类型)方法名:(  参数类型1)参数名1 参数说明关键字 :参数类型2)参数名2 (...)...

- 类实例的方法
1-[self 方法名]
2-MyClass * myclass = [[MyClassalloc] init];
[myclass setName :@"name"];
+ 类的方法
[MyClass classMethod:12.5 keyword:1]

Objective-C基础语法:
1--文件类型
.h 头文件:类,类型,方法,结构体等声明
.m 实现文件:OC 和 C的代码
.mm 实现文件:C++和OC的代码
#import 确保头文件不被重复引用
2--字符串
@"string";
%d 十进制整数
%f 十进制小数(浮点型)
%c 字符
%s 字符串
%@ OC字符串
3--日志打印
printf("log message");
NSLog(@"log message");
4--数据类型和表达式
C语言基本数据类型:int float double char
其它数据类型:Long Longlong Short Unsigned(无符号型0--255) signed(有符号类型-128--127)
OC数据类型:
id 标识任何类的对象
BOOL boolean(YES/NO)
NIL NULL
SEL
SELoneMethod=@selector(render);//@selector 得到一个方法的指针
[oneObjectperformSelector :oneMethod]
// 传入名为render的方法,使得oneMethod成为指向render方法的指针,oneObject是实例化的对象
// 通过呼出performselector来执行render方法。performSelector是NSObject类的实现方法。
YES
NO
5--循环
for(n=1;n<11;n=n+1){}
while(n <= 5){}
do{}while(n != 1)
6--条件
if(){}else{};
switch(){case ...}
XX?SS:CC
7--内存管理(计数器半自动化管理)
alloc +1
release -1
copy 1 重新生成一个新的实例
retain +1
autorelease 再pool栈顶添加此对象
NSAutoreleasePool * pool =[[NSAutoreleasePool alloc] init];

[pool drain]
8--继承
@interfacesubClassName:superClassName
-(BOOL)isKindOfClass:class-object// 判断对象是否是某一种类的实例(包括其父类)
-(BOOL)isMenberOFClass:class-object// 判断对象是否是某一种类的实例(不包括其父类)
-(BOOL)respondsToSelector:select //判断对象是否实现某个方法
+(BOOL)instancesRespondToSelector:selector//判断类的实例是否实现某个方法
+(BOOL)isSubclassOfClass:class-object//判断一个类是否是某个类的子类
-(id)performSelector:selector // 让对象呼叫指定的方法
-(id)performSelector:selectorwithObject:object // 让对象呼叫指定的方法并带有参数
A * a = [[A alloc] init];
if([a isKindOfClass:[A class]] ==YES){}
9--类别和协议
类别:@interface myClass(类别名) 类别和继承类似,但类别只能添加新的方法不能添加任何实例变量
协议:类似于Java的interface
协议的声明:
@protocol protocolName
@optional // 默认实现的方法
-(void)method1
@required // 必须实现的方法
-(void)method2
@end
协议的使用:
@interfacemyClass:superClass<protocol1,protocol2, ...>
协议实现对象委托:
@protocol proA
-proMethod1;
-proMethod2;
@end

@interface myClassA:NSObject
{
// 代理变量
id _delegate;
}
// 代理方法
@property(nonatomic,retain) id_delegate;
-(void)callDelegateMethod;
@end
@implement myClassA
@synthesize -delegate;
-(void)callDelegateMehtod
{
[_delegate proMethod1];
[_delegate proMethod2];
}
@end

@interfacemyClassB:NSObject<proA>
-(void)testDelegate;
@end
@implement myClassB
// 协议(接口)方法实现
-(void)testDelegate
{
myClass * myA = [[myClass alloc]init];
// 设置代理
_delegate self;
[myA callDelegateMethod];
}
@end
10--属性
声明:@property (修饰) 类型 属性名
@property(nonatomic,retain) id_delegate;
实现:@synthesize 属性名
@synthesize -delegate;
修饰的类型:
readwrite: 变量可读写
readonly: 变量只可以读,需要手动添加setter
assign: 变量可以直接赋值,内存引用计数值不变
retain: 对象进行一次引用,内存引用计数值+1
copy: 复制一个新的对象,内存引用计数值为1
nonatomic: 默认为atomic 在多线程是变量互斥
11-快速枚举
NSArray * array = [NSArrayarrayWithObjects:@"ome",@"two",@"three",nil];
NSDictionary
NSManagedObjectModel
NSSet
----------------------------------
for(NSString * element in array){}
----------------------------------
NSEnumerator * enu = [arrayreverseObjectEnumerator];
for(NSString * element =[enunextObject])
{
if([elementisEqualToString:@"three"])
{
break;
}
}
————————————————

1 个回复

倒序浏览
嗯嗯                                          
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马