создайте класс памяти в цели-c

Привет я пытаюсь построить класс памяти для своего приложения для iPhone. Класс памяти для хранения списка продовольственных заказов, и у каждого заказа есть продовольственное имя и цена. В приложении я хочу сохранить его в заказе во множество, названное заказами, когда я нажимаю кнопку в своем меню блюд. Я плохо знаком с Целью-c, и я - Явский пользователь. То, что я хочу построить, является классом памяти, который является similiar к классу ArrayList Явы, и myStorage класс держит продовольственное имя и цену.

Я имею уже, строят некоторые коды, но собранный с ошибкой "Местная декларация 'заказа' скрывает переменную экземпляра' на моем Storages.h в @property (неатомный) NSMutableArray *заказы;

Storage.h

#import 

@interface Storage : NSObject{
    NSString *name;
    NSInteger *price;
}
@property (nonatomic)NSString *name;
@property (nonatomic)NSInteger *price;
-(void) setName: (NSString *) n;
-(void) setPrice: (NSInteger *) p;
-(NSString *)getName;
-(NSInteger *)getPrice;

@end

Storage.m

 #import "Storage.h"

 @implementation Storage


 @synthesize name;
 @synthesize price;


 - (void)setName:(NSString *)n {
     name = n;
}
 - (void)setPrice:(NSInteger *)n {
    price = n;
}
- (NSString *)getName{
return name;
}
- (NSInteger *)getPrice{
    return price;
}


@end

Storages.h

#import 
#import "Storage.h"
@interface Storages : NSObject{
    Storage *order;
    NSMutableArray *orders;

@property (nonatomic) NSMutableArray *orders;//error "Type of property 'orders' does not match type of accessor 'setOrder'"

-(void) setOrders:(Storage *)order;
-(NSMutableArray *) orders;
@end

Storages.m

#import "Storages.h"

@implementation Storages
@synthesize orders;

-(void) setOrders:(Storage *)oneOrder{  

    [orders addObject: oneOrder];
}
-(NSMutableArray *) orders;{
    return orders;
}
@end
0
nl ja de
моя storages.h ошибка все еще там, пожалуйста, помогите.
добавлено автор user2021373, источник

3 ответы

Как Явский программист, я могу сказать, что самым близким к ArrayList является NSMutableArray. Таким образом, вы в порядке в своих файлах Хранения.

Предупреждение вас добирается, то, потому что вы скрываетесь, заражают ivar (переменная класса).

В этом случае хорошо объявлять как это:

@interface Storage : NSObject

@property(nonatomic,strong) name;
@property(nonatomic,strong) price;

@end

и затем просто синтезируйте те proprties в.m файле.

Другая ошибка все равно. Когда вы создаете и @synthesized @property, компилятор собирается написать accessor для этого опоры, если вы не обеспечиваете свое собственное, в этом случае вы обеспечиваете свое собственное, но подпись не сделала многого.

Это - не совсем то же самое, но это похоже на вас, написал на Яве:

public void setOrders(List list) {
}


@Override
public void setOrders(Order order) {
}

И jdk мешал бы вам делать так.

Кроме того, очень важный, вы отметили свой вопрос как iOS, тогда у вас нет сборщика "мусора", как это находится на Яве.

Выгода использования @property - то, что компилятор собирается написать для вас все необходимые линии кода для освобождения предыдущей переменной и назначить новую стоимость.

Если вы переписываете со своим кодом, вы теряете все те преимущества и получаете некоторые утечки памяти.

1
добавлено
вы переписываете переменных в Хранении. Просто удалите сеттера и ivar, и вы в порядке.
добавлено автор Leonardo, источник
Хранение @interface: NSObject {NSString *имя; NSInteger *цена;} на это имя случая и цену ivars, на Яву, их называют Переменной экземпляра
добавлено автор Leonardo, источник
я сделал синтезируемый в storage.m
добавлено автор user2021373, источник
что такое ivar???
добавлено автор user2021373, источник
человек спасибо, больше ошибки теперь.
добавлено автор user2021373, источник

Простой как это вы объявили заказ как ivar и тени параметра функций это. Мой предлагать должен сделать не пользователя ivars вообще, просто свойства. В вашем случае это предупреждение не причинило бы боль так, просто удостоверьтесь, что вы знаете, к какой переменной вы получаете доступ. В этом случае вы даже не получаете доступ к ivar, таким образом, вы в порядке.

Я удалил бы весь ivars и объявил бы заказ как частную собственность (в.m файле):

@interface Storages()

@property (nonatomic,strong,readwrite) Storage* order;

@end

Даже не синтезируйте его, это будет автоматически синтезироваться к _order, таким образом, вы избежите конфликта имен.

0
добавлено
Удалите ivar также.
добавлено автор Ramy Al Zuhouri, источник
omg, все еще работа косяка. ошибка все еще там.
добавлено автор user2021373, источник

У вас есть переменная экземпляра, которую это назвало уже заказ . Переименуйте свой аргумент чему-то еще или переименуйте свою переменную экземпляра с подчеркнуть _order .

0
добавлено
спасибо, u зафиксировало одну из моей ошибки
добавлено автор user2021373, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async