1.一切都有指针
NSString *str = @"123";
NSString * 表示创建一个NSString指针,名为str ,即str是一个指针
id表示任意类型的指针 id 可以看做是NSString *,NSArray *
平常用NSLog 取 str 是取指针? 那打印出出来的内容是自己去指针地址上取值?
有&str ??
2.类型转换
NSString *str = @"1";
Ship *ship = (Ship *)str; // 当然实际中是有问题的 str是NSString指针,转成Ship * 指针。 类型转换其实什么都没做,只是蒙蔽编译器或者看起来更直观一些。编译的过程中不警告,在实际运行起来的时候会自己判断
3.内省 introspection
a.调用钱先问id有什么方法,如果有调用[发送消息]
isKindOfClass
isMemberOfClass
respondsToSelector
if(obj isKindOfClass:[NSString class]){
NSString *s = [obj stringByAppendingString:@"xzzz"];
}
//selector SEL类型
if([obj respondsToSelector:@selector(shootMethod)]){ // 相当于obj.hasMethod
[obj shootMethod];
}
4.SEL selector
SEL shootSelector = @selector(shoot);
if([obj performSelector:shootSelector]){
//...
}
1.定义array
[arrar makeObjectsPerformSelector:shootSelector];
2.定义比如UIButton的selector
[button addTarget:self action:@selector(digitalPress)];
!!!selector is powerful!!!
5.Foundation
NSObject:
description 每个类要重写description,然后在像NSLog之类的函数就可以返回有价值的内容
copy,mutableCopy返回的是imutable和mutable的
// 自定义类都要自己实现
NSNumber <------> int,float,double,bool...
@[] --> NSArray,
@"" --> NSString,
@() --> NSNumber
or : @2,@3.2,@([card getSuit]);
NSData: 二进制,网络传输。 与NSDictionary的转换,NSString的转换等
NSDate:日期,但是世界上各个国家地区的日期或者日历,时间表示都不一样,NSDate提供了很多方法
NSSet 不重复的对象集合
NSDictionary 仅次于NSArray重要的
@{},@{key:value,key2:value2...} key90%都是NSString
查找可以直接dic[key1],[dic keyForObj key1];
都有Mutable类的
Enumerator,Enumeration
想array,dictionary可以获取enumerate,用在for in中,比较快速
NSUserDefault
获取和保存用户的设置
[[NSUserDefault standardUserDefaults] setArray:rvArray forKey:@"RecentlyViews"]
-(void)setDouble (double)aDouble forKey:(NSString *)key
设置了想保存的数据之后还要调用来同步
[[NSUserDefaults standardDefaults] synchronize];
NSRange,定义: 搜索用
typedef struct {
NSUInterger location;
NSUInterger length;
} NSRanger
上面表示定义NSRanger,有location和length。可以在官方文档中看到这种定义
!!如果location没有对应的值,则返回NSNotFound
NSString *greeting = @"hello world!";
NSString *hi = @"hi";
NSRanger r = [greeting rangeOfString:hi];
// r是一个NSRange对象,只是location位置是NSNotFound
if(r.location == NSNotFound){
//
}
==================================
UIKIt
UIColor 表示颜色
UIColor *color = [otherColor colorWithAlphaComponent:0.3];
标准色 [UIColor greenColor]
系统色 [UIColor lightTextColor]
UIFont importance,美观!
UIFont *font = [UIFont preferredFontForTextStyle:
UIFontTextStyleBody];
根据内容来获取字体? 首选字体
UIFontTextStyleHeadline,
UIFontTextStyleCaptional,
UIFontTextStyleFootnote...
系统字体,不要在用户的内容中使用系统自己。只能用在例如按钮的label
+(UIFont *)systemFontOfSize:(CGFloat)pointSize;
+(UIFont *)boldSystemFontOfSize:(CGFloat)pointSize;
UIFontDescriptor
NSAttributedString:
用来描述属性,比如显示的字体,多大,下滑线,内发光。。。
不是NSString的子类
-(NSDictionary *)attributeAtIndex:(NSUInterger)
effectiveRange:(NSRangerPointer)ranger;
-(NSString *)string; !!importance
用它可以把NSAttributedString转成string再获取其中的内容
NSAttributedString *attr = ...;
NSString *subString = ...;
NSRange r = [[attr string] rangeOfString:subString];
@{
NSFontAttributeName:[UIFont preferredFontWithTextStyle:...]
NSForegroundColorAttributeName:[UIColor greenColor],
NSStrokeWithAttributeName:@-5,
NSStrokeColorAttributeName:[UIColor redColor]
}
用在何处:
UIButton: -(void)setAttributedTitle:(NSAttributedString *)title forState...
UILabel:
UITextView:!!NSAttributedString最常用到
*NSMutableAttributedString
objective-c 笔记3
最新推荐文章于 2024-06-17 00:15:00 发布