2015-09-19 3 views
1

В ActionScript вы можете сделать что-то вроде этого:Obj-C - Можно ли указать на объект параметров которого модифицируется

character.x = character.width; 
character.y = character.height; 

или вы могли бы просто сделать это:

character.x = this.width;//`this` automagically == `character` in Actionscript (or whichever object is being modified. `this` just points to the current object being modified, it's a built in global dynamic variable) 
character.y = this.height; 

Где this это динамическая переменная, которая просто указывает на параметр объекта who (x или y в этом случае).

..

objectA.property1 = objectA.property2; 

точно так же, как

objectA.property1 = this.property2; 

Поскольку this представляет собой динамический объектно-ориентированный переменная, которая указывает на объект модифицируется автоматически.


Есть ли что-нибудь подобное this в Objective-C?

Преимущества позволят мне создавать ярлыки, используя clang, используя #define.

Например, прямо сейчас я могу хотеть лязгом ( НЕ Obj-C) ярлык для центрирования объекта в это SuperView:

#define centerInSuperview center = CGPointMake(this.superview.frame.size.width/2.0f, this.superview.frame.size.height/2.0f) 

Тогда я мог бы сказать

object1.centerInSuperview; 

, который будет заменен следующим образом:

object1.center = CGPointMake(this.superview.frame.size.width/2.0f, this.superview.frame.size.height/2.0f); 

за исключением this - это не вещь в Obj-c, поэтому мне нужно что-то еще, чтобы указать на объект, который будет изменен, чтобы я мог делать быстрые клавиши CLANG.

+2

Я не думаю, что вы понимаете, как это работает в ActionScript. – jtbandes

+1

Эквивалент 'this' в Objective-C является' self', но вы бы это знали, если бы вам когда-либо приходилось читать учебник Objective-C новичков. –

+2

Как я понимаю, он не хочет, чтобы «это» означало «я», он хочет, чтобы это означало «символ». – zoul

ответ

0

Из вашего описания character кажется, X, Y, ширина и высота которой нет ничего, но CGRect в Objective C. Если это так, то его структура и вы можете сделать простое присваивание, как вы показали в своем вопросе

Однако, из названия вопроса, похоже, вы хотите знать, есть ли в Objective C, мы можем обращаться к параметрам объекта, пока тот же объект изменяется. Ну, это зависит, если вы просто меняете свойства объекта из одного потока, вы можете это сделать. Таким образом, self.property1 = self.property2 (модифицировано из класса) ИЛИ character.property1 = character.property2 (изменено вне класса) разрешено.

Но если вы говорите о нескольких потоках, то объекты по умолчанию не являются потокобезопасными. Пока один поток обновляет его, другой поток не должен обращаться к нему. Это может привести к сбою.

+0

Извините, я больше ищу способ ссылаться на редактируемый объект, не используя само имя объекта. Поэтому я не хочу говорить 'character.property1 = character.property2'. Я хочу сказать 'character.property1 = this.property2', где' this' становится объектом, у которого есть модифицируемое или заданное свойство. –

+0

Это не то, как это работает в объекте C. Возможно, вы захотите прочитать документацию Apple. – Abhinav

+0

Я знаю, что это не так, как это работает? Вот почему я задал этот вопрос здесь, чтобы узнать, есть ли способ сделать это ха-ха. Мне было интересно, имеет ли Objective-c любые «динамические объектно-ориентированные переменные». –

Смежные вопросы