标签: objc-protocol

类型'ViewController'不符合协议'UICollectionViewDataSource'

我正在学习使用UIPickerController操作相机的教程.但是在实现时UICollectionViewDatsaSource,我得到一个错误,说它ViewController不符合UICollectionViewDataSource协议.

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIImagePickerControllerDelegate, UINavigationControllerDelegate 
Run Code Online (Sandbox Code Playgroud)

有关如何解决这个问题的任何想法?

ios objc-protocol swift

15
推荐指数
2
解决办法
2万
查看次数

9
推荐指数
1
解决办法
3634
查看次数

在类中使用self方法

我在ShareKit中遇到了这个代码,我不明白作者self在类方法中使用了什么.有一个警告:不兼容的指针类型将'Class'发送到参数类型id<FBSessionDelegate>. 我想清理这些警告,所以我可以看到那些可能会在以后受到伤害的警告.我能做什么/应该做什么不会打破这个?

这是SHKFacebook.m文件,类名是SHKFacebook

+ (void)logout
{
    FBSession *fbSession; 

    if(!SHKFacebookUseSessionProxy){
        fbSession = [FBSession sessionForApplication:SHKFacebookKey
                                                 secret:SHKFacebookSecret
                                               delegate:self];

    }else {
        fbSession = [FBSession sessionForApplication:SHKFacebookKey
                                        getSessionProxy:SHKFacebookSessionProxyURL
                                               delegate:self];
    }

    [fbSession logout];
}
Run Code Online (Sandbox Code Playgroud)

class-design objective-c class-method objc-protocol

9
推荐指数
1
解决办法
5419
查看次数

Xcode 5 iOS 7中的自动属性合成警告

我在Xcode 5中用iOS 7 SDK发出警告

Auto property synthesis will not synthesize property declared in a protocol
Run Code Online (Sandbox Code Playgroud)

我没有在Xcode 4中使用iOS 6.1 SDK获得此警告.有任何想法吗?

这是我的代码:

List.h

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>

@interface List : UIViewController <UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate, CLLocationManagerDelegate, MKMapViewDelegate, MKAnnotation>
{
    IBOutlet UITableView *tableView;
    IBOutlet UISearchBar *searchBar;
}

@property (nonatomic, strong) NSArray *annotations;

@end
Run Code Online (Sandbox Code Playgroud)

List.m

#import "List.h"
#import "RSFM.h"
#import "AnnotationDetailView.h"
#import "DTCustomColoredAccessory.h"

@interface List ()

@end

@implementation List
{
    NSMutableArray *title;
    NSMutableArray *subtitle;
    NSMutableArray *displayItems;
    NSMutableDictionary *marketDictionary;
    NSMutableArray *farmMarkets;
    NSArray *keys;
    NSMutableArray …
Run Code Online (Sandbox Code Playgroud)

warnings objective-c ios objc-protocol

5
推荐指数
1
解决办法
6670
查看次数

检查可选的多参数委托方法

对斯威夫特来说很新.如果(a)设置委托并且(b)实现该方法,那么如何获得调用可选委托方法的最简洁/惯用语法则苦苦挣扎.

我知道?可以扮演这个角色(例如self.delegate.foo?()),但我越来越陷入困境时试图调用具有多个参数的ObjC委托方法,并返回我关心捕获值(布尔)语法正确的(我想区分"方法未实现"和"方法已实现并返回false").

这是一个例子.在这种情况下,MyDelegateProtocol有一个可选的方法-myThing:argTwo:argThree:(返回Bool).

这段代码似乎正确的语义,但它使用respondsToSelector和非常健谈.可以用更惯用的方式改进吗?

if let delegate = self.delegate {
    if delegate.respondsToSelector(#selector(MyDelegateProtocol.myThing(_:argTwo:argThree:))) {
        if delegate.myThing!(self, argTwo: foo, argThree: bar) {
            // do something
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ios objc-protocol swift

4
推荐指数
1
解决办法
89
查看次数

JSONModel:填充泛型类型的NSArray

我在我的iOS应用程序中使用JSONModel,我正面临一些警告,让我自己解释一下.

假设我有这个JSONModel

CTVContact.h

@interface CTVContact : JSONModel
@property (nonatomic, strong) NSArray<Optional, CTVPhone> *phone;
@end
Run Code Online (Sandbox Code Playgroud)

CTVContact.m

NSMutableArray *phones = [[NSMutableArray alloc] init];
for(NSString *p in personPhones) {
    CTVPhone *phn = [[CTVPhone alloc] init];
    phn.original = p;
    [phones addObject:phn];
}    
phone = [NSArray arrayWithArray:phones];
Run Code Online (Sandbox Code Playgroud)

基本上它都像一个魅力,但我得到一个警告,说明以下内容:

Incompatible pointer types assigning to 'NSArray<Optional,CTVEventParticipant> *' from 'NSArray *'
Run Code Online (Sandbox Code Playgroud)

我怎么能绕过那个警告?在没有该警告的情况下,我找不到将所有数组值分配给手机阵列的正确方法.

非常感谢提前!

objective-c ios objc-protocol jsonmodel

2
推荐指数
1
解决办法
2642
查看次数