sách gpt4 ăn đã đi

Tóm tắt việc sử dụng trung tâm thông báo iOS NSNotificationCenter

In lại Tác giả: qq735679552 Thời gian cập nhật: 28-09-2022 22:32:09 25 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này Tóm tắt cách sử dụng trung tâm thông báo iOS NSNotificationCenter được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này thì nhớ like nhé.

Lời nói đầu.

Gần đây, công ty đã tổ chức khóa đào tạo kéo dài hai tuần cho nhân viên mới. Lịch trình dày đặc và không có ngày nghỉ cuối tuần. Blog hứa sẽ cập nhật vào thứ Hai đã bị gián đoạn, khiến mọi người phải chờ đợi rất lâu. Bây giờ khóa đào tạo đã kết thúc, cuối cùng tôi cũng có thể lặng lẽ trở lại làm lập trình viên. Tôi rất hạnh phúc. . .

1. Mối liên hệ và sự khác biệt giữa nsnotification và delegate.

Như chúng ta đã biết, nsnotification và delegate thường được sử dụng trong iOS để chuyển tin nhắn giữa một số lớp. Gần nhà hơn, sự khác biệt giữa hai là gì? NSNotification là một trung tâm tin nhắn do iOS cung cấp và defaultNotification toàn cầu quản lý cơ chế tin nhắn trong ứng dụng. Như có thể thấy từ API công khai, một trình quan sát được sử dụng ở đây và việc gửi tin nhắn được thực hiện bằng cách đăng ký addobserver và hủy đăng ký Removeobserver. Tài liệu của Apple nêu rõ rằng khi hủy một lớp, bạn phải nhớ xóa máy chủ, nếu không sẽ gây ra sự cố, vì vậy nsnotifcation được sử dụng mà không giữ lại+1 và nsnotification là một-nhiều.

Còn đối với delegate thì rất đơn giản, chỉ cần thêm một con trỏ, sau đó truyền hàm cần gọi đến các lớp khác thông qua delegate. Không cần triển khai dưới hình thức phát sóng. Tuy nhiên, hình thức đại biểu chỉ có thể là một-một và không thể đạt được một-nhiều.

Trong trường hợp nào thì đại biểu và thông báo nsnotification được sử dụng?

Từ quan điểm hiệu quả, đại biểu rất nhẹ so với đại biểu, nsnotification rất nặng về mặt hiệu quả, đại biểu rõ ràng là cao hơn thông báo. Nói chung chúng ta sẽ sử dụng nó như thế này.

Cảnh một:

a sở hữu b, sau đó một số thao tác trong b cần được gọi lại cho a. Lúc này, bạn chỉ cần gọi lại cho a through delegate. Vì b được tạo bởi a nên b có thể trực tiếp gán đại biểu cho a.

Cảnh hai:

a và b là hai mối quan hệ không liên quan đến nhau, a không biết b, và b không biết a. Vì vậy nếu sử dụng delegate lúc này thì không thể thực hiện được và sẽ tương đối phức tạp. Vì vậy, bạn có thể thực hiện một số tin nhắn chuyển qua nsnotifcation.

Vì vậy, khi sử dụng đại biểu, cả hai có mối quan hệ trực tiếp và một bên biết sự tồn tại của bên kia. NSnotifcation thường được sử dụng khi mọi người không biết sự tồn tại của bên kia và thường được sử dụng khi sử dụng mô-đun chéo. Khi sử dụng nó, bạn có thể cần phải viết thêm delegate để triển khai nó, việc này đòi hỏi rất nhiều code. NSnotication có thể giao tiếp dễ dàng miễn là xác định được tên thông báo liên quan. Cả hai đều có thế mạnh riêng.

2. Nghe nsnotification đi kèm với hệ thống.

Trên thực tế, có rất nhiều tên xxxnotification được xác định trong hệ thống, chỉ cần cmd+shift+o mở nhanh, nhập nsnotification hoặc uinotification, bạn có thể thấy nhiều định nghĩa biến kết thúc bằng thông báo. và những sự kiện nào sẽ được kích hoạt. Nói chung, tất cả đều được thông báo tới [nsnotificationcenter defaultcenter].

Tóm tắt việc sử dụng trung tâm thông báo iOS NSNotificationCenter

Các bước sử dụng.

Bước 1: Đăng ký hệ thống để lắng nghe sự kiện.

?
1
2
3
4
5
6
//Đăng ký sự kiện bật lên bàn phím trong nsnotificationcenter
  [[nsnotificationcenter defaultcenter] addobserver:self bộ chọn:@selector(keyboardupevent:) tên:uikeyboarddidshownotification đối tượng:nil];
  // Đăng ký sự kiện ẩn bàn phím trong nsnotificationcenter
  [[nsnotificationcenter defaultcenter] addobserver:self bộ chọn:@selector(keyboarddownevent:) tên:uikeyboarddidhidenotification đối tượng:nil];
  //Đăng ký chương trình đánh thức sự kiện từ nền trong nsnotificationcenter
  [[nsnotificationcenter defaultcenter] addobserver:self bộ chọn:@selector(becomeactive:) tên:uiapplicationdidbecomeactiveđối tượng thông báo:nil];

Bước 2: Xử lý sau khi sự kiện được kích hoạt.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
  * Xử lý kích hoạt sự kiện bàn phím bật lên
  *
  * @param thông báo
  */
-( vô hiệu )keyboardupevent: (nsnotification *)notification{
   //nslog(@"Sự kiện bật lên bàn phím được kích hoạt==%@",thông báo);
   nslog (@ "Sự kiện bật lên bàn phím được kích hoạt" );
}
 
/**
  * Xử lý kích hoạt sự kiện ẩn bàn phím
  *
  * @param thông báo
  */
-( vô hiệu )keyboarddownevent: (nsnotification *)notification{
   //nslog(@"Sự kiện ẩn bàn phím được kích hoạt==%@",thông báo);
   nslog (@ "Đã kích hoạt sự kiện ẩn bàn phím" );
}
 
/**
  * Xử lý kích hoạt khi chương trình thức dậy từ nền
  *
  * @param thông báo
  */
-( vô hiệu )trở thành hoạt động: (nsnotification *)thông báo{
   nslog (@ "Chương trình thức dậy từ nền để kích hoạt quá trình xử lý" );
}

Bước thứ ba là hủy giám sát trong dealloc.

?
1
2
3
4
5
6
/**
  *nsnotificationcenter Lưu ý: delleac cần phải bị hủy mỗi lần trong đối tượng người nhận.
  */
-( vô hiệu ) hiểu
   [[nsnotificationcenter defaultcenter] xóa observer:self];
}

3. Tùy chỉnh thông báo.

Một ví dụ tôi sử dụng ở đây là: xác định một nút trong bộ điều khiển khung nhìn, nhấp vào nút và thay đổi nội dung trong hai chế độ xem tùy chỉnh cùng một lúc.

Các bước sử dụng.

Bước đầu tiên là tạo một nút và hai chế độ xem tùy chỉnh trong bộ điều khiển khung nhìn.

?
1
2
3
4
5
6
7
8
9
10
11
uibutton *postmsgbtn = [[phân bổ uibutton] initwithframe:cgrectmake(50, 200, 100, 40)];
  [postmsgbtn đặt tiêu đề:@ "Gửi tin nhắn" forstate:uicontrolstatenormal];
  postmsgbtn.backgroundcolor = [uicolor màu xám];
  [postmsgbtn addtarget:self hành động:@selector(postmsg:) forcontrolevents:uicontroleventtouchupinside];
  [self.view addsubview:postmsgbtn];
 
  myview *view = [[phân bổ myview] initwithframe:cgrectmake(50, 250, 100, 50)];
  [self.view thêmsubview:view];
 
  myview *view2 = [[myview phân bổ] initwithframe:cgrectmake(50, 320, 100, 50)];
  [self.view thêmsubview:view2];

Bước thứ hai là nhấp vào nút để gửi thông báo.

?
1
2
3
-( vô hiệu )postmsg: (uibutton *)btn{
   [[nsnotificationcenter defaultcenter] postnotificationname:notification_message_name đối tượng:nil thông tin người dùng:@{@ "tin nhắn" :@ "jingming1" }];
}

Bước thứ ba là đăng ký các sự kiện nghe trong chế độ xem tùy chỉnh.

  。

Sao chép mã Mã này như sau:
[[nsnotificationcenter defaultcenter] addobserver:self bộ chọn:@selector(acceptmsg:) tên:tên_tin_nhắn_thông_báo đối tượng:nil];

  。

Bước thứ tư là xử lý các sự kiện lắng nghe.

?
1
2
3
4
5
-( vô hiệu )acceptmsg : (nsnotification *)thông báo{
   nslog (@ "%@" ,thông báo);
   nsdictionary *userinfo = thông báo.userinfo;
   _label.text = [đối tượng thông tin người dùng cho khóa:@ "tin nhắn" ];
}

Bước 5: Phát hành giám sát trong dealloc.

?
1
2
3
-( vô hiệu ) hiểu
   [[nsnotificationcenter defaultcenter] xóa observer:self];
}

Trên đây là toàn bộ nội dung bài viết này hi vọng nó sẽ giúp ích cho việc học của mọi người và cũng mong mọi người ủng hộ mình.

Liên kết gốc: https://segmentfault.com/a/1190000017206276.

Cuối cùng, bài viết tóm tắt cách sử dụng trung tâm thông báo NSNotificationCenter của iOS kết thúc tại đây. Nếu bạn muốn biết thêm về tóm tắt cách sử dụng trung tâm thông báo NSNotificationCenter của iOS, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ hỗ trợ tôi trong tương lai blog! .

25 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress