objective-c 笔记3

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值