@interface WinesViewController : UITableViewController <UIActionSheetDelegate> {
NSMutableArray *sortedObjects;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,添加了UIActionSheetDelegate协议,因为我使用UIActionSheet对TableView进行排序,它需要一个委托.现在我在DetailViewController中添加一个SwipeGestureRecognizer,从Detail View中访问TableView中的下一个单元格.我正在使用的教程告诉我在TableViewController中为DetailViewController添加委托协议.它告诉我以与我已经添加UIActionSheetDelegate完全相同的方式添加它,那么现在如何为DetailViewController添加委托?
我使用一些带有一些可选方法的协议.
@protocol PhotoDropDownDelegate <NSObject>
@optional
- (void)getEditResult:(NSString *)status;
- (void)getImageForDiagram:(UIImage *)image andImagePath:(NSString *)imagePath;
- (void)dismissPhotoDropDown;
@end
Run Code Online (Sandbox Code Playgroud)
我把它分配给一个班级
photoDropDownViewController.photoDropDownDelegate = self;
Run Code Online (Sandbox Code Playgroud)
我只使用一种方法
- (void)getImageForDiagram:(UIImage *)image andImagePath:(NSString *)imagePath
{
// Make a Image on center of screen
PhotoLayer *photoLayer = [PhotoLayer nodeWithLengthOfShape:300 andHeight:200 andPathToImage:imagePath];
photoLayer.position = ccp(400, 500);
photoLayer.nameObject = [self makeNewName_ForShape];
photoLayer.isSelected_BottomRightElip = YES;
photoLayer.isSelected = YES;
[photoLayer doWhenSelected_Elip_BottomRight];
[photoLayer show_Elip];
[list_Shapes addObject:photoLayer];
[self addChild:photoLayer];
photoLayer = nil;
// Set Button Delete
selected_GerneralShapeLayer = (GerneralShapeLayer *) [list_Shapes lastObject];
[self updateStatusForButtonDelete];
} …Run Code Online (Sandbox Code Playgroud) 于是我开始学习tcp/ip协议栈。但是在所有来源中对 tcp 协议的描述过于模糊。主要的想法是我想知道 tcp 协议实际上是如何以编程方式实现的。应用的协议如何与 tcp 协议通信。这个通讯的接口是什么。目前我认为应用协议是直接在应用程序中实现的:假设浏览器实现了 HTTP 协议,并且该协议与在操作系统中实现的 tcp 协议的集中实现进行通信。这是正确的,我缺乏可以从中学习的资源。请推荐我阅读一些东西。
我在 Xcode 项目中有多个协议,它会给出这样的错误。帮助我错误:-> 找不到“ButtonDelegate”的协议声明,您的意思是“CustomDelegate”吗?提前致谢
委托头文件
#import <UIKit/UIKit.h>
#import "Constant.h"
@protocol ButtonDelegate <NSObject>
-(void)ChatButtonClicked;
@end
@interface DonttreadonmeCell : UITableViewCell<UIGestureRecognizerDelegate,UITextViewDelegate>{
id <ButtonDelegate> Buttondelegate;
.h File
#import <UIKit/UIKit.h>
#import <Twitter/Twitter.h>
#import "JSONParsing.h"
#import "Facebook.h"
#import "DonttreadonmeCell.h"
#import "Constant.h"
@class DonttreadonmeCell;
@interface BookTextPeregraphselectedViewController : UIViewController<MFMailComposeViewControllerDelegate,FBSessionDelegate,FBRequestDelegate,ButtonDelegate,FBLoginDialogDelegate,FBDialogDelegate,JSONParsingDelegate,UITableViewDataSource,UITableViewDelegate,UIGestureRecognizerDelegate,UITextViewDelegate>{
Run Code Online (Sandbox Code Playgroud) 我知道它是什么,它是用于数据库连接的 Winsock TCP/IP 协议,而不是它的首字母缩写词。
也许是这样的:
数据库 微软 SOCket 网络?
看起来有点笨重。我今天和一个 SQL 实习生一起工作,并意识到我实际上并不知道它代表什么。搜索只找到了对协议及其工作原理的解释。
有任何想法吗?
我理解在三向握手中,有时接收端会在建立连接(piggybacking)时发送一个SYNACK数据包,但是它什么时候发送一个SYN然后一个ACK数据包?
例如:
->同步
<-SYN_ACK
->确认
相对:
->同步
<-同步
->SYN_ACK
谢谢!
我正试图用Swift 2赶上这种面向协议的编程酷,但我现在已经迷失了.
我正在尝试将该理论应用于实际用例,所以让我们从最明显的开始:
假设我有一个UITextField并且我希望有许多协议(例如phone,numeric,lengthLimited ......)符合UITextFieldDelegate并覆盖该textField:shouldChangeCharactersInRange:replacementString方法以完成所需的行为.
甚至可以使用带有此扩展名的"Extensions.swift"文件并将所需的协议分配给UITextField(例如,numeric,lengthLimited)?那将非常有用.如果是这样,有没有办法将协议分配给一个UITextField插座,或者我需要子类化UITextField并使其符合所需的协议?如果是这种情况,那么我没有看到使用协议扩展而不是旧的子类化的太多优势.
我正面临一个恼人的问题,我希望你们能帮我解决这个问题。
我有两个协议和一个类:
protocol Prot1: AnyObject {
}
protocol Prot2 {
associatedtype T: AnyObject
}
class TheClass: Prot2 {
typealias T = Prot1
}
Run Code Online (Sandbox Code Playgroud)
这导致编译器说:
在导航中,它显示了更多详细信息:
我真的需要关联类型是AnyObject类型。这就是我需要帮助的原因。
有谁知道如何解决这个问题?
非常感谢。
OBS:我使用的是 swift 2.3
我正在使用Laravel 5.6.23
这是我的错误信息:
UnexpectedValueException
There is no existing directory at "C:\timereg-project\Laravel\storage\logs" and its not buildable: Protocol error
Run Code Online (Sandbox Code Playgroud)
目录日志确实存在于我的 Laravel 项目中。我试过这个不起作用:
php artisan cache:clear
php artisan clear-compiled
Run Code Online (Sandbox Code Playgroud)
我试过这个也不起作用:
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
如果我试试这个:
sudo chmod -R 777 storage
sudo chmod -R 777 storage
Run Code Online (Sandbox Code Playgroud)
我得到错误
chmod: cannot access 'Laravel/storage/logs': no such file or directory
Run Code Online (Sandbox Code Playgroud)
不起作用的命令:
composer update
Run Code Online (Sandbox Code Playgroud)
我该怎么办?感觉就像我被日志文件夹完全阻止了。
目前我有一个协议:
protocol CameraOpen: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func openCamera()
}
Run Code Online (Sandbox Code Playgroud)
该函数在协议扩展中定义:
extension CameraOpen where Self: UIViewController {
func openCamera() {
if UIImagePickerController.isSourceTypeAvailable(.camera) {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .camera
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个问题是我不知道如何实际测试协议扩展中定义的函数。通常我会创建一个我想要测试的类的实例并使用点符号来测试类中的每个函数,但由于它是一个协议,我无法创建它的实例。例如,如果我做这样的事情:
class CamerOpenTests: XCTestCase {
var cameraOpen: CameraOpen?
override func setUp() {
super.setUp()
cameraOpen = CameraOpen()// error here
}
override func tearDown() {
cameraOpen = nil
super.tearDown()
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
无法构造“CameraOpen”,因为它没有可访问的初始值设定项
关于如何对这个函数进行单元测试的任何想法?