我正在学习使用UIPickerController操作相机的教程.但是在实现时UICollectionViewDatsaSource,我得到一个错误,说它ViewController不符合UICollectionViewDataSource协议.
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIImagePickerControllerDelegate, UINavigationControllerDelegate
Run Code Online (Sandbox Code Playgroud)
有关如何解决这个问题的任何想法?
任何人都可以在目标C中为正常的类而不是类别或协议提供前向声明的示例吗?
class objective-c forward-declaration objc-protocol objc-category
我在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) 我在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) 对斯威夫特来说很新.如果(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应用程序中使用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)
我怎么能绕过那个警告?在没有该警告的情况下,我找不到将所有数组值分配给手机阵列的正确方法.
非常感谢提前!
ios ×4
objective-c ×4
swift ×2
class ×1
class-design ×1
class-method ×1
jsonmodel ×1
warnings ×1