Добавляет SUBVIEW с помощью NSObject?

#iphone #objective-c #class #uiview #nsobject

#iPhone #objective-c #класс #uiview #nsobject

Вопрос:

У меня есть класс, который является типом NSObject, и в представлении он не позволяет мне помещать:

 [self.view addSubview:nsObject];
  

потому что это несовместимый тип. Как я могу заставить это работать?

Комментарии:

1. почему вы пытаетесь добавить объект, отличный от UIView, в качестве подвида к UIView?

Ответ №1:

addSubview: Метод принимает только экземпляры UIView . Это не будет работать с NSObject .

Ознакомьтесь со спецификацией метода в документах Apple

Ответ №2:

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

 @interface MyClasS : UIView {
  

Комментарии:

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

2. Что такого вы пытаетесь с этим сделать, чего не можете сделать, создав подкласс UIView?

3. О, я был неправ. Это потому, что я пытался изначально сделать его UIView и по какой-то причине это не сработало, но создание нового в качестве NSObject сработало, и изменение этого на say UIView также работает.

Ответ №3:

Я предполагаю, что nsSubview является подклассом UIView и, просто введя аргумент, передающий компилятор, видит его как NSObject? Или это какой-то объект-оболочка, который содержит UIView? Вы могли бы попробовать:

 UIView *v = (UIView *)nsSubview ;
[ self.view addSubview:v] ;
  

Комментарии:

1. Приведения в стиле C опасны, если вы не уверены, что указатели являются правильным типом, в который вы их преобразуете

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

3. (вздох) это казалось быстрым способом выяснить, ЧТО происходит, учитывая ограниченное количество другой информации