复制属性时调用了什么

时间:2016-10-26 16:35:42

标签: objective-c properties

当我们拥有内存标识符为copy的属性时,系统会调用哪个类方法来复制我的对象?

2 个答案:

答案 0 :(得分:3)

标记为copy的Objective-C属性将使用copy类中的NSObject方法。基本上,自动合成的setter方法看起来像这样:

- (void)setName:(NSString *)name {
    _name = [name copy];
}

除此之外还有更多(键值观察等),但我展示的内容涵盖了您的问题。

如果该属性适用于您自己的自定义类,请确保您的类符合NSCopying并正确实现copyWithZone:方法。

答案 1 :(得分:1)

这意味着你的属性属于某些采用NSCopying的类,并且会在其上调用 constructor() { super(); $('[name=EmpNum]').autocomplete({ minLength: 6, autoFocus: true, source: function (request, response) { $.ajax({ url: "/services/adlookup/autocompleteuserlookup", type: "POST", dataType: "json", data: { term: request.term }, success: function (data) { response($.map(data, function (item) {//data needs to be array of objects return { label: item.LastName + ", " + item.FirstName + " (" + item.Descriptions + ")", value: item.EmpNum + "|" + item.UserName + "|" + item.LastName + "|" + item.FirstName + "|" + item.EmailAddress + "|" + item.WorkPhone };//item is each item in array item.LastName })) } }) }, focus: function () { $(".ui-helper-hidden-accessible").hide(); event.preventDefault(); return false; } }) .on('autocompleteselect', function (e, ui) { //fill in data after it had been selected var t = $(this), label = (e.type == 'autocompleteresponse' ? ui.content[0].label : ui.item.label), value = (e.type == 'autocompleteresponse' ? ui.content[0].value : ui.item.value); var adprop = value.split("|"); return false; }); }//end constructor (实际上是copy)。

因此,研究符合NSCopying所需的内容将告诉您需要知道的一切。