Действительно ли можно ли получить доступ к делегату приложения из функции UITableViewDataSource?

Вы должны просто переместить ветвь (указатель) на task1_work:

git branch -f task2_base task1_work

Однако , вопрос, который звучит в моей голове: почему вы храните эти база веток на первом месте?

32
задан jammur 3 May 2009 в 14:55
поделиться

4 ответа

Проблема оказалась действительно простой. Я создал NSString для хранения пути к файлу моей базы данных, используя stringByAppendingPathComponent:. Я не понял, что это будет автоматически выпущено, и поэтому я не удосужился явно сохранить его. Причина, по которой он возвращал объект другого типа, заключалась в том, что эта память использовалась повторно после автоматического освобождения строки.

Явное сохранение строки, содержащей путь к файлу базы данных, решило проблему.

1
ответ дан 27 November 2019 в 19:52
поделиться

Приложение - это одноэлементное приложение, которое поддерживает ссылку на делегат приложения. Вы всегда можете получить доступ к своему делегату приложения, используя:

[UIApplication sharedApplication].delegate

Вам может потребоваться привести возвращение к вашему собственному классу делегата приложения, чтобы избавиться от предупреждений. Более того, напишите аксессор, который возвращает делегату вашего приложения upcast:

#pragma mark access to app delegate etc.
+ (MyAppDelegateClass*) sharedAppDelegate; {
    return (MyAppDelegateClass*)[[UIApplication sharedApplication] delegate];
}
75
ответ дан 27 November 2019 в 19:52
поделиться

Роджер прав, но лично я нахожу крайне странным смешивать точечный синтаксис и синтаксис скобок в одном и том же утверждении.

Если вас это тоже смущает, эквивалентный синтаксис, использующий только скобки нотация:

[[UIApplication sharedApplication] delegate];

и да, вам может потребоваться привести результат к вашему классу делегата приложения , а не к универсальному классу UIApplicationDelegate, иначе вы, скорее всего, получите несколько предупреждений компилятора.

22
ответ дан 27 November 2019 в 19:52
поделиться

While I don't like sticking too much into my AppDelegate, I'll often need to access it to get to other singletons in my app, which makes the method call + cast a little cumbersome. So in most of my apps, I'll define a quick macro in my global header file.

Example follows:


#define MY_DELEGATE (AppDelegate*)[[UIApplication sharedApplication] delegate]

It's a lot easier to refer to MY_DELEGATE.

8
ответ дан 27 November 2019 в 19:52
поделиться