黑马程序员 -- OC语言 NSString使用 点语法 构造 分类
来源:互联网 发布:贵州大数据交易所 编辑:程序博客网 时间:2024/05/21 17:20
第三讲 NSString使用 点语法 构造 分类
A.NSString使用
1.NSString字符串处理类。NSLog中显示字符串用%@
Int main()
{
//创建OC字符串的第一种方式
NSString *str = @”itcast”;
NSString *str1 = @”呵呵itcast”;
Int size = [str length];//size = 6,这个方法计算的是字符个数(字数)
Int size 1 = [str1 length];//size = 8,这个方法计算的是字符个数(字数),字数包括空格
//Char *p = “name”;
//NSLog(@”%s”, name);
NSLog(@”%@”, str);
//NSString的类方法
Int age = 20;
Int no = 45;
//创建OC字符串的第二种方式
NSString *newstr = [NSStringstringWithFormat:@”ni %d shi %d”, age, no];
NSLog(@”%@”, newstr);
Return 0;
}
@interface Person :NSObject
{
//创建字符串成员变量这样写
NSString *_name;
}
@end
2.作业讲解
a.书写注释格式应为:int _weight; // 重量(加空格以便整齐)
b.包含头文件用#import,而不采用#include,包含本地的头文件用<xxx.h>,而不能用”xxx.h”
c.项目需求不懂的时候,必须要问个明白,不然的话,项目做成了而和需求有违背,那么问题就大了
#import<Foundation/Foundation.h>
#import<math.h>
//点类
@interface Point2D :NSObject
{
Double _x;
Double _y;
}
//x的set和get方法
-(void)setX:(double)x;
-(double)x;
//y的set和get方法
-(void)setY:(double)y;
-(double)y;
//同时设置x和y
-(void)setXandY:(double)x andY:(double)y;
//计算跟其他点的距离
-(double)distanceWithOther:(Point2D*)other;
//计算两点之间的距离
-(double)distanceBetweenPoint1:(Point2D*)p1 andPoint2D:(Point2D *)p2;
@end
@implemention Point2D
-(void)setX:(double)x;
{
_x = x;
}
-(double)x;
{
Return _x;
}
-(void)setY:(double)y;
{
_y = y;
}
-(double)y;
{
Return _y;
}
-(void)setXandY:(double)x andY:(double)y
{
_x = x;
_y = y;
或者
Self->_x = x;
Self->_y = y;
或者
[self setX:x];
[self setY:y];
}
//计算跟其他点的距离
-(double)distanceWithOther:(Point2D *)other
{
//利用对象方法,调用类方法来实现。
Return [Point2D distanceBetweenPoint1:selfandPoint2D:other];
或者一步一步计算
Double xDelta = _x – [other x]; //[other x]这种写法是利用创建的类对象,运用get方法实现。
// Double xDelta =self-> _x –other->x;
// Double xDelta =[self x] –[other x];
}
//计算两点之间的距离
-(double)distanceBetweenPoint1:(Point2D*)p1 andPoint2D:(Point2D *)p2;
{
//类方法调用对象方法实现
Return [p1 distanceWithOther:p2];
}
@end
//设计一个圆类
@interface Circle :NSObject
{
Double _radius; //半径
Point2D *_point; //圆心
}
//半径的set和get方法
-(void)setRadius:(double)radius;
-(double)radius;
//圆心的set和get方法
-(void)setPoint:(Point2D *)point;
-( Point2D *) point;
@end
@implemention Circle
-(void)setRadius:(double)radius;
{
_radius = radius;
}
-(double)radius;
{
Return _radius;
}
-(void)setPoint:( Point2D *) point;
{
_point = point;
}
-( Point2D *) point;
{
Return _point;
}
@end
Int main()
{
//创建圆对象
Circle *c1 = [Circle new];
//创建圆心对象
Point2D *p1 = [Point2D new];
[p1 setXandY:10 andY:15];
//设置圆心
[c1 setPoint:p1];
Return 0;
}
//代码在内存中的存储细节
//设计关于两个圆是否重叠,用类方法和对象方法实现。
B.多文档抽取
1.在C语言中的实现,声明文件和实现文件单独放置在不同的文件中(.h和.c)
2.在OC语言中,(.m和.h文件)
C.点语法
1.点语法定义
@interface Person : NSObject
-(void)setAge:(int)age;
-(int)age;
@end
@implemention Person
-(void)setAge:(int)age
{
-age = age;
}
-(int)age
{
Return 0;
}
@end
Int main()
{
Person *p = [Person new];
//点语法的本质还是方法调用,在执行下面的文件时,会自动转化为[p setAge:52]set方法。
p.age = 52;
//点语法的get方法, 在执行下面的文件时,会自动转化为Int a = [p age]get方法。
Int a = p.age;
//////////////
[p setAge:52];
Int a = [p age];
Return 0;
}
2.点语法运用注意
a.点语法必须的set方法放在get方法前面。
p.age = 10; //set方法
int a = p.age; //get方法
b.单独用点语法的时候,成员变量的set和get方法还是必须有的。如果没有在调用的时候会出项报错现象。
D.成员变量作用域
1.成员变量声明在类中
@interface Person : NSObject
{
Int_age;
Int _height;
}
-(void)test;
@end
@implemention Person
-(void)test
@end
2.成员变量作用域(能不能直接访问(通过变量名访问))有四种
a. @private:只能在当前类的实现@implemention中直接访问。
b. @protected:可以在当前类以及子类的实现@implemention中直接访问。
c.@public:任何地方都是可以直接访问。
d.@package:同一个“体系内”(框架)可以访问,介于@private和@public之间
@interface Person : NSObject
{
@public
Int _age; //公有类型,任何地方都是可以直接访问。
@private
Int _height; //私有类型,只能在当前类的实现@implemention中直接访问(在子类中存在只是不能直接用)。
@protected
Int _name; //受保护的类型,可以在当前类以及子类的实现@implemention中直接访问。
}
-(void)test;
@end
E.Xcode自动生成set方法和get方法(使用@property和@synthesize类)
1. @property
//声明
@interface Person : NSObject
{
Int_age;
Int _height;
}
//set方法和get方法
-(void)setAge:(int)age;
-(int)age;
//利用编译器特性,使用@property
@property int age; //自动生成成员变量_age的set方法和get方法的声明
-(void)test;
@end
//实现
@implemention Person
-(void)test
@end
2. @synthesize
//实现
@implemention Person
//set方法和get方法
-(void)setAge:(int)age
{
_age = age;
}
-(int)age
{
Return _age;
}
//使用@synthetic类自动生成set方法和get方法的实现,并且会访问_age这个成员变量
@synthetic age = _age; //这样写替代上面的set和get方法。
-(void)test
@end
3. 使用@property和@synthesize类的最简写法
//在声明中,类型相同时这样写
@property int age, height;
//在实现中,类型相同时
@synthesize age = _age, height = _height;
//@property仅仅只在声明中写了就行,因为他可以自动生成set方法和get方法的声明和实现。在程序中可以省去@synthetic这个方法。
a.@propertyint age;
- 黑马程序员 -- OC语言 NSString使用 点语法 构造 分类
- 黑马程序员——OC语言------NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- 黑马程序员---iOS基础----OC中的点语法、构造方法
- [黑马程序员][OC]点语法
- 黑马程序员-OC-点语法
- 黑马程序员--OC-点语法
- 黑马程序员-------OC----点语法
- 黑马程序员---【OC语言】05点语法与作用域
- 黑马程序员——OC语言——点语法
- 黑马程序员IOS-OC语言-点语法、@property
- 黑马程序员-OC语言-点语法介绍和使用(听课笔记)
- 黑马程序员-OC语言-NSMutableString&NSString
- 黑马程序员——OC核心语法点语法,成员变量,@property和@synthetic,构造方法
- 黑马程序员 - OC语言 - 【考点】分类(Category)使用注意事项
- 黑马程序员——OC语言------OC特有语法:分类、description、类对象、SEL
- 黑马程序员 oc随机 点语法
- 黑马程序员------OC基础-----点语法、id、构造方法、Category、成员变量作用域
- 黑马程序员-OC学习笔记-----self指针、点语法、构造方法、类别
- Solr学习总结-问题处理
- MAC解決kernel_task讓cpu突然飆高100%,150%的有效方式
- rank,dense_rank,row_number使用和区别
- 错误 2 error C1083: 无法打开源文件:“..\UIEditBox\UIEditBoxImplWin.cpp”: No
- 数据库范式
- 黑马程序员 -- OC语言 NSString使用 点语法 构造 分类
- Qt 奇葩问题
- 递归的重点,和printf的顺序答应和逆序答应来理解递归!(c)
- android视频录制、另一部手机实时观看方案
- 算法学习 - 图的深度优先遍历(DFS) (C++)
- Windows Sockets错误码查询
- ASP.NET MVC的19个请求事件
- 欢迎使用CSDN-markdown编辑器
- android 实现edittext输入内容后可以点击右侧小图片进行清除内容