#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. (вздох) это казалось быстрым способом выяснить, ЧТО происходит, учитывая ограниченное количество другой информации