首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
转:NSString什么时候用copy,什么时候用strong
】的更多相关文章
NSString copy or not (strong)?
前些日子笔者一直在维护公司的一些旧项目,项目里面的NSString属性几乎全部用的strong,而我在给项目增加一些新的功能的,又都用的copy,因为在我的脑子里几乎已经把NSString大部分用copy当做了习惯,正好某日给团队元老看到了,与之交流时谈到他说NSString一般都用strong就可以了,一般不会有被外界修改的安全性问题. 然而,我已经习以为常用copy,要强行改过来是一件很蛋疼的事,那当时又正因为是习以为常,所以也没能很好的说出个所以然来,让他觉得确实该用c…
NSString 为什么要使用copy,而不是retain
NSString 为什么要使用copy,而不是retain1.首先如果使用retain,只是引用计数+1,并没有生成新的对象,所以效率好2.但是使用copy安全.因为NSString 为 NSMutableString 的基类,如果将NSMutableString 以retain的形式赋值给NSString后,后续修改NSMutableString会导致NSString内容的变化,这通常不是我们希望的,所以NSString要使用copy.比如: NSMutableString *mName = …
NSString 属性为啥用copy 不用strong
copy不能修改,strong可以修改,防止字符串被意外修改.demo: ——————————————————code 你要的 demo—————————————————— @property (nonatomic, copy) NSString * copystring; @property (nonatomic, strong) NSString *strongString; NSMutableString *string = [NSMutableString stringWi…
block要用copy修饰,还是用strong
栈区与堆区 block本身是像对象一样可以retain,和release.但是,block在创建的时候,它的内存是分配在栈(stack)上,而不是在堆(heap)上.他本身的作于域是属于创建时候的作用域,一旦在创建时候的作用域外面调用block将导致程序崩溃.使用retain也可以,但是block的retain行为默认是用copy的行为实现的, 因为block变量默认是声明为栈变量的,为了能够在block的声明域外使用,所以要把block拷贝(copy)到堆,所以说为了block属性声明和实际的…
IOS 关于NSString类型的属性为什么有时用copy,有时用strong呢?
对于很多初学者,发现在修饰NSString类型的对象时,会有这样的疑惑?怎么有些人用strong修饰,而有些人用copy修饰呢? 这里有个例子,一.首先声明2个属性: @property (nonatomic,copy) NSString *CopyName; @property (nonatomic,strong) NSString * StrongName; 1.1.创建一个可变字符串,方面后面作变化更改. NSMutableString* MutableName = [NSMutableS…
NSString NSMutableString copy mutableCopy retain weak strong整合
copy retain assign的差别在于对象属性的set方法 NSString 与 NSMutableString NSString是不可变字符串对象,这句话的意思,结合代码: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"Shaw"; NSString *str1 = @"Roo…
【转】 NSString什么时候用copy,什么时候用strong
原文: http://blog.csdn.net/itianyi/article/details/9018567 大部分的时候NSString的属性都是copy,那copy与strong的情况下到底有什么区别呢? 比如: @property (retain,nonatomic) NSString *rStr; @property (copy, nonatomic) NSString *cStr; - (void)test: { NSMutableString *mStr = [NSMutab…
转:NSString什么时候用copy,什么时候用strong
大部分的时候NSString的属性都是copy,那copy与strong的情况下到底有什么区别呢? 比如: @property (retain,nonatomic) NSString *rStr; @property (copy, nonatomic) NSString *cStr; - (void)test: { NSMutableString *mStr = [NSMutableStringstringWithFormat:@"abc"]; self.rStr = mStr…
NSString和NSMutablestring,copy和strong(转载)
1.http://www.cocoachina.com/ios/20150512/11805.html 2.http://blog.csdn.net/winzlee/article/details/51752354 NSString和NSMutableString之间的深拷贝和浅拷贝的问题: NSString 使用copy NSMutableString 使用 strong 当使用NSString(A)给NSString(B)赋值,当B为copy的时候也不会生成2个内存空间,即为浅拷…
NSString为何要用copy修饰,而不是strong?
NSString本身是无所谓的,但是如果一个 NSString 指针指向了一个 NSMutableString的内存空间的话,如果使用 strong 修饰的话,如果你在别处修改这个值的话,那么原来的值也会改变.用 copy 是生成了一份新的内存空间,所以原值不会改变. 所以用copy是为了安全,防止NSMutableString赋值给NSString时,前者修改引起后者值变化而用的.…
Objective-C 中的 assign, copy,retain,strong,weak 详解
在IOS开发中,经常会使用 @property(nonatomic,copy)NSString * name; 语句来快速设置set get 方法,在此依次说明atomic .nonatomic.copy .retain的作用 atomic 和 nonatomic 用来决定编译器生成的 getter和 setter 是原子操作还是非原子操作. atomic 设置成员变量的@property属性时,默认为atomic,即原子操作,对同一对象的set和ge…
IOS开发copy,nonatomic, retain,weak,strong用法
readwrite 是可读可写特性;需要生成getter方法和setter方法时 readonly 是只读特性 只会生成getter方法 不会生成setter方法 ;不希望属性在类外改变 assign 是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时; retain 表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1; copy 表示赋值特性,setter方法将传入对象复制一份;需要完全一份新的变量时. nonatomic…
Foundation
类:NSObject .NSString.NSMutableString.NSNumber.NSValue.NSDate.NSDateFormatter.NSRange.Collections:NSSet.NSArray(Ordered.Copy).NSMutableArray.NSMutableSet.NSDictionary ====================================================================================…
ios9基础知识总结(foundation)笔记
类:NSObject .NSString.NSMutableString.NSNumber.NSValue.NSDate.NSDateFormatter.NSRange.Collections:NSSet.NSArray(Ordered.Copy).NSMutableArray.NSMutableSet.NSDictionary ====================================================================================…
NSString属性什么时候用copy,什么时候用strong?
我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子. 示例 我们定义一个类,并为其声明两个字符串属性,如下所示: 1 2 3 4 @interface TestStringClass () @property (nonatomic, strong) NSString *strongString; @property…
如果类的属性是copy的NSString类型 用set方法拦截时
@property (nonatomic, copy) NSString *badgeValue; - (void)setBadgeValue:(NSString *)badgeValue { _badgeValue = [badgeValue copy]; }…
【转】NSString属性什么时候用copy,什么时候用strong?
原文网址:http://www.cocoachina.com/ios/20150512/11805.html 我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子. 示例 我们定义一个类,并为其声明两个字符串属性,如下所示: 1 2 3 4 @interface TestStringClass () @property (nonatomic, …
iOS 使用COPY声明NSSTRING属性
使用COPY声明NSSTRING属性 2014/05/29 JACE 发表回复 声明一个NSString属性使用copy要优于使用strong.这同样适用于遵守NSCoding协议的不可变类(immutable class),如NSNumber.NSArray.NSSet等.上面提到的这些类都有一个可变(mutable)的版本.选择使用copy的理由是,NSString属性可能被传入一个NSString实例,也可能是一个NSMutableString实例.当传入了一个NSMutableStrin…
NSString属性什么时候用copy,什么时候用strong?【转】
转自:http://www.cocoachina.com/ios/20150512/11805.html. 我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子. 示例 我们定义一个类,并为其声明两个字符串属性,如下所示: 1 2 3 4 @interface TestStringClass () @property (nonatomic, s…
NSString copy && strong
http://www.cocoachina.com/ios/20150512/11805.html 我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子.示例我们定义一个类,并为其声明两个字符串属性,如下所示: @interface TestStringClass ()@property (nonatomic, strong) NSString…
ios开发之NSString用strong还是用copy?
代码如下: 1,声明 @property(nonatomic,strong)NSString *firstName; @property(nonatomic,copy)NSString *secondName; 2,代码 NSMutableString *str1 = [NSMutableString stringWithFormat:@"李博"]; self.firstName = str1; NSLog(@"使用strong第一次得到的名字:%@",self.f…
NSString 使用 copy、strong
// 首先定义2个属性 @property (nonatomic, strong) NSString *stStr; @property (nonatomic, copy) NSString *coStr; // 测试 - (void)_strong_copy { NSMutableString *mutableStr = [NSMutableString stringWithFormat:@"abc"]; self.stStr = mutableStr; self.coStr = m…
iOS之NSString类型为什么要用copy修饰
在开发的过程中,只知道NSString类型最好用copy修饰而不能用strong,但是不知道为什么,今天了解了下,总算搞明白了. 如下所示,当修饰符为copy时,因为NSMutableString是NSString类型的子类,所以可以用指针self.name指向mStr,但是我们知道copy的含义是指当重新赋值时深拷贝新对象再赋值给self.name, 所以此时self.name的指针和mStr的指针指向的对象就不同了,所以当给mStr对象发送方法appendString的时候,修改的只是mSt…
探究@property申明对象属性时copy与strong的区别
一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开发中也是没有认真的去研究,至于使用copy还是用strong完全是根据心情随性而为,也一直没有出什么问题.可苹果竟然分了两个关键字,就肯定有其用意,为了提高自己还是要仔细的搞清楚其中之差别!好了,废话说完进入正题. 二.对象属性描述copy与strong的区别 直接上代码: ``` @propert…
@property中的copy.strong.weak总结
1.NSString类型的属性为什么用copy NSString类型的属性可以用strong修饰,但会造成一些问题,请看下面代码 #import "ViewController.h" @interface ViewController () @property(nonatomic,strong) NSString *nameStrong; @property(nonatomic,copy) NSString *nameCopy; @end @implementation ViewCon…
iOS 浅谈:深.浅拷贝与copy.strong
深.浅拷贝 copy mutableCopy NSString NSString *string = @"汉斯哈哈哈"; // 没有产生新对象 NSString *copyString = [string copy]; // 产生新对象 NSMutableString *mutableCopyString = [string mutableCopy]; NSLog(@"string = %p copyString = %p mutableCopyString = %p&quo…
assign、copy 、retain等关键字的含义
assign: 简单赋值,不更改索引计数copy: 建立一个索引计数为1的对象,然后释放旧对象retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1Copy其实是建立了一个相同的对象,而retain不是:比如一个NSString对象,地址为0×1111,内容为@"STR"Copy到另外一个NSString之 后,地址为0×2222,内容相同,新的对象retain为1, 旧有对象没有变化retain到另外一个NSString之 后,地址相同(建立一个指针,指针…
iOS基础-NSString及NSMutableString剖析
一.NSString头文件 NSString : NSObject 实现协议: NSCopying/NSMutableCopying/NSSecureCoding 类别: //扩展类别 NSString (NSStringExtensionMethods) //此API是用来检测给定原始数据的字符串编码 NSString (NSStringEncodingDetection) NSMutableString : NSString 类别: //可以实现子类的原始replaceCharactersI…
iOS之属性修饰符 retain、strong和copy区别测试
时不时会有点迷惑属性修饰符retain.strong.copy三者之间的区别,还是把测试过程记录下来好一点! 1.属性修饰符结论 2.给retain.strong.copy修饰的字符串属性赋值指针变化测试例子 3.字符串调用copy.mutableCopy方法给字符串赋值指针变化例子 一.属性修饰符retain.strong.copy修饰字符串测试 先看代码,创建一个Person类,定义属性 #import <Foundation/Foundation.h> @interface Person…
NSString与奇怪的retainCount
话题从sunnyxx的<黑幕背后的Autorelease>开始 文章开头有个小例子 __weak id reference = nil;- (void)viewDidLoad { [super viewDidLoad]; NSString *str = [NSString stringWithFormat:@"sunnyxx"]; // str是一个autorelease对象,设置一个weak的引用来观察它 reference = str;}- (void)viewWill…