话说我打算一天学完object c语法,系列1--------来自书Objective-c程序设计
来源:互联网 发布:手机如何改淘宝评价 编辑:程序博客网 时间:2024/05/18 02:43
类型:
NSString
NSInteger
NSLong控制台输出
NSObject:对象
比较两个对象是否相等:
NSObject *object1 = [[NSObject alloc] init];NSObject *object2 = obejct1;if([object isEqual:object2]){NSLong(@"is equal");}else{NSLong(@"is not equal");}
判断一个string是否为空:
NSString *shortString = @"HelloWorld";if([shortString lengtg] == 0){NSLong(@"is empty string");}else{NSLong(@"is not empty string ");}
循环结构,比如for:
int increment = 0;for (increment = 0; increment < 100; increment++){NSLog(increment++);}
-(void) method : (int) arguments;
-为方法类型 +表示类方法
-(id) initWithAge:(int) _age identify:(int)_identify
方法名称为initWithAge,第一个参数是(int) _age,第二个参数是(int)_identify
identify其实是对_identify的一个说明,initWithAge对_age一个说明
方法的调用:
1.[类名或对象名 方法名];
2.对象名.方法名
NSString *s;s = [[NSString alloc] initWithString:@Hello iphone4S];Person *person = [Person alloc];person = [person init];-(id) initWithAge:(int)_age identify:(int) _identify{if(self = [super init]){age = _age;identify = _identify;}return self;}NSLog(@"self class is : %@", [self class]);
@class 和import的区别
@class只是用到了声明,如果需要用到这个class里面的方法,还需要import,通常在.h文件里面只需要@class,.m文件里面需要import
oc里面不需要get说明,直接使用:
多个成员变量可以不写get和set,使用property(list) names
@implementation Person
@synthesize myNumber
@end
调用的时候:
NSLog(@"Person number : %d",[person myNumber]);
还有个@property(nonatomic) int number
atomic是多线程的一个保护技术
重载:
定义一个同名的新方法,新方法必须具有相同的返回类型,并且参数的个数和重载的方法相同
class里面的权限控制:
同时也具有public protected private,oc也是单继承
成员变量的new是这样的:
Person *person = [[Person alloc] init];
但是对应的需要在return之前使用:
[pool drain]或者[pool release];
drain用于清除pool中对象,release用来释放内存
比如可以这样[person release]
方法调用:
[实例 方法]
[类名 方法]
完整的方法调用格式为:
[接收方 名字1:参数1 名字2: 参数2 名字3: 参数3 ...]
oc运行在一个方法调用中嵌套另一个方法调用,比如:
[NSString stringWithFormat:[test format]];
另外还有一单,self类似this,可以使用self调用本类中的方法:
-(BOOL) isQualified{return ([self age] > 21);}
输入输出,和c差不多,也有scanf,输出用NSLog(),占位符前面需要加上@,如果是oc内置类型,比如NSString需要这样:%@
id类型和class的简单使用:
typedef:
和c是一样的
typedef int myInt
myInt age;
BOOL类型
YES、NO
选择器SEL
P44 用到再说
创建一个类
静态成员变量与类方法
static int intY;
+(int) staticIntY
就像上面所写的,需要使用“+”来声明类方法
变量的存储类型:
1、auto、自动局部变量,是缺省设置
2、const
3、volatile,这个修饰符刚好和const相反,它明确地告诉编译器,该变量的值 会发生改变,他用来修饰被不同线程访问和修改的变量
定义@property修饰符来设置成员变量的get和set
修饰符可以是:
实现一个例子P119
MyClass.h:
//// MyClass.h// test//// Created by Dawn on 13-5-27.// Copyright (c) 2013年 zeng. All rights reserved.//#import <Foundation/Foundation.h>@interface MyClass : NSObject{ int intValue; float floatValue;}@property int _intValue;@property (copy) NSString *name;@property float floatValue;@property (readonly, getter = getANickname) NSString *nickname;@end
MyClass.m:
//// MyClass.m// test//// Created by Dawn on 13-5-27.// Copyright (c) 2013年 zeng. All rights reserved.//#import "MyClass.h"@implementation MyClass@synthesize _intValue = intValue, name;// 这条语句不是必须的@dynamic floatValue;-(float) floatValue{ return floatValue;}-(void)setFloatValue:(float)aValue{ floatValue = aValue;}-(NSString *)getANickname{ return @"Lee";}@end
main.m:
//// main.m// test//// Created by Zeng on 13-5-24.// Copyright (c) 2013年 zeng. All rights reserved.//#import <Foundation/Foundation.h>#import "YourClub.h"#import "Membership.h"#import "MyClass.h"int main(int argc, const char * argv[]){ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; MyClass *class1 = [[MyClass alloc] init]; [class1 set_intValue:1]; [class1 setName:@"Sam"]; [class1 setFloatValue:1.1f]; NSLog(@"intValue is %i, name is %@, floatValue is %g, nickname is %@", [class1 _intValue], [class1 name], [class1 floatValue], [class1 getANickname]); [class1 release]; [pool release]; return 0;}
在object-c 2.0中,在.h文件中使用@property来标识属性(一般是实例变量);在实现文件中(也就是扩展名为.m的文件),使用@synthesize标识所声明的属性,让系统自动生成设置方法和获取方法。
声明一个多参数的方法:
MyClass.h:
//// MyClass.h// test//// Created by Dawn on 13-5-27.// Copyright (c) 2013年 zeng. All rights reserved.//#import <Foundation/Foundation.h>@interface MyClass : NSObject{ NSString *name; int age;}@property (nonatomic, copy) NSString *name;@property (nonatomic) int age;-(void) setName:(NSString *)theName andSetTheAge: (int) theAge;@end
MyClass.m:
//// MyClass.m// test//// Created by Dawn on 13-5-27.// Copyright (c) 2013年 zeng. All rights reserved.//#import "MyClass.h"@implementation MyClass@synthesize name;@synthesize age;-(void) setName:(NSString *)theName andSetTheAge: (int) theAge{ [self setName:theName]; [self setAge:theAge];}@end
main.m:
//// main.m// test//// Created by Zeng on 13-5-24.// Copyright (c) 2013年 zeng. All rights reserved.//#import <Foundation/Foundation.h>#import "YourClub.h"#import "Membership.h"#import "MyClass.h"int main(int argc, const char * argv[]){ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; MyClass *class1 = [[MyClass alloc] init]; [class1 setName:@"zengraoli" andSetTheAge:36]; NSLog(@"name is %@, age is %i", [class1 name], [class1 age]); [pool release]; return 0;}
- 话说我打算一天学完object c语法,系列1--------来自书Objective-c程序设计
- 话说我打算一天学完object c语法,系列2--------来自书Objective-c程序设计
- 话说我打算一天学完object c语法,系列3--------来自书Objective-c程序设计
- 话说我打算一天学完object c语法,系列4--------来自书Objective-c程序设计
- 话说我打算一天学完object c语法,系列5--------来自书Objective-c程序设计
- 话说我打算一天学完object c语法,系列6--------来自书Objective-c程序设计
- Objective-C语法系列(一)
- object-c --语法系列(一)
- Objective-C语法学习 第一天
- 【书籍篇】《Objective-C程序设计》语法相关
- Objective - C 语法1
- 我学c语言的一天
- 我要学c第一天b
- objective-c语法系列--多重参数
- objective-C语法系列之---访问权限
- Objective C 语法系列--异常处理
- Object-C系列<Objective-C之内存管理>
- Objective-C 第一天
- zoj2008 || poj1511&nbs…
- SSIS遍历xls文件读取和写入数据
- poj 3268 spfa()最短路径
- poj 3259spfa()判断是否存在负环
- 博客搬家啦
- 话说我打算一天学完object c语法,系列1--------来自书Objective-c程序设计
- .pnt .pcf .dmt .mat .sym 等格式的文件如何导入Windchill
- 纯CSS美化HTML的Table
- mahout中的相似度算法
- !!!Chapter 9 Graph Algorithm (9.4 ~ 9.7) Network Flow
- C++中对sprintf()函数的说明
- compass学习笔记
- MongoDB ReplSet + Sharding 分片集群,主从同步配置
- log4j使用和配置