日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS之学习笔记五(合成存取方法)

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS之学习笔记五(合成存取方法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、主要屬性介紹

1、自動合成setter、getter方法

1)、接口部分@property指定屬性? 2)、實現部分@synthesize

如果

@syntheszie? widows = _windows

這里成員變量名是_windows,而不是windows

?

?

2atomic(nonatomic)

這里主要是指存取方法為原子操作,實現線程安全,atomic是默認,保證線程安全,但是會導致性能降低,單線程我們一般考慮nonatomic

?

?

3、copy

用這個修飾了屬性名,把副本值設置給類的屬性,如果賦值的副本發生改變,但是類部的屬性值不會改變

?

?

4、getter、setter

如果(getter = ff1, setter = ff2),會把默認的getter方法改為ff1, 會把默認setter方法改為ff2,我們調用的時候就是[對象 ff1]、[對象 ff2]

?

?

5、readonly、readwirte

readonly是指系統指合成getter方法,不合成setter方法

readwirte是默認的,都合成

?

?

6、retain

使用retain指示定義屬性時,當莫個對象賦值給屬性時,該屬性原來所引用的對象引用計數減1,被賦值對象的引用計數加1

當一個對象的引用計數大于1時,該對象不該被回收。

?

?

7、strong、weak

strong:指被賦值對象持有強引用,不會自動回收

weak:使用弱引用指向被賦值對象,該對象可能被回收

?

?

?

?

?

?

?

二、測試demo

User.h

#ifndef User_h #define User_h #import <Foundation/Foundation.h> @interface User : NSObject @property (nonatomic) NSString *name; @property (nonatomic) NSString *city; @property (nonatomic, copy) NSString *add; @property NSString *pass; @property NSDate *birth; @property NSDate *birth1; @end #endif /* User_h */

?User.m

#import <Foundation/Foundation.h> #import "User.h"@implementation User @synthesize name = _name; @synthesize pass; @synthesize birth; -(void) setName:(NSString *)name {self->_name = [NSString stringWithFormat:@"hello%@", name]; } @end

main.m文件

#import <UIKit/UIKit.h> #import "AppDelegate.h" #import "Person.h" #import "Apple.h" #import "User.h" #import "Args.h" #import "KVCPerson.h"int main(int argc, char * argv[]) {@autoreleasepool {User *user = [User new];NSMutableString *name = [NSMutableString stringWithString:@"chencaifeng"];NSMutableString *city = [NSMutableString stringWithString:@"hunan"];NSMutableString *addr = [NSMutableString stringWithString:@"luyunlu"];[user setName:name];[user setCity:city];[user setAdd:addr];[user setPass:@"hello"];[user setBirth:[NSDate date]];NSLog(@"name is %@, and pass is %@, birth is%@, city is%@, add is %@", [user name], [user pass], [user birth], [user city], [user add]);//我們把setName函數重寫了,雖然name后面追加了字符串,但是后面打印值沒有改變[name appendString:@"chenyu"];//由于這里屬性沒有加copy,city后面追加了字符串,所以后面打印也變了[city appendString:@"changsha"];//由于這里屬性加了copy,由于這個addr后面值追加了,所以后面打印不會改變[addr appendString:@"kanyunlu"];NSLog(@"name is %@, and pass is %@, birth is%@, city is%@, add is %@", [user name], [user pass], [user birth], [user city], [user add]);//這里是用.操作user.add = @"hello";NSLog(@"user add is %@", user.add); } }

?

?

?

?

?

?


三、運行結果

name is hellochencaifeng, and pass is hello, birth isFri Jul 6 19:51:04 2018, city ishunan, add is luyunlu name is hellochencaifeng, and pass is hello, birth isFri Jul 6 19:51:04 2018, city ishunanchangsha, add is luyunlu user add is hello

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的IOS之学习笔记五(合成存取方法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。