Skip to content

Commit e69b7c3

Browse files
authored
[objective_c] Swift style KVO pattern (#2344)
1 parent b57cb5a commit e69b7c3

16 files changed

+1214
-22
lines changed

pkgs/ffigen/lib/src/code_generator/objc_built_in_types.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
const objCBuiltInInterfaces = {
88
'DOBJCDartInputStreamAdapter': 'DartInputStreamAdapter',
9+
'DOBJCObservation': 'DOBJCObservation',
910
'DOBJCDartProtocolBuilder': 'DartProtocolBuilder',
1011
'DOBJCDartProtocol': 'DartProtocol',
1112
'NSArray': 'NSArray',
@@ -109,6 +110,7 @@ const objCBuiltInProtocols = {
109110
'NSPortDelegate': 'NSPortDelegate',
110111
'NSSecureCoding': 'NSSecureCoding',
111112
'NSStreamDelegate': 'NSStreamDelegate',
113+
'Observer': 'Observer',
112114
};
113115

114116
const objCBuiltInCategories = {
@@ -131,5 +133,10 @@ const objCBuiltInCategories = {
131133
};
132134

133135
const objCBuiltInGlobals = {
136+
'NSKeyValueChangeIndexesKey',
137+
'NSKeyValueChangeKindKey',
138+
'NSKeyValueChangeNewKey',
139+
'NSKeyValueChangeNotificationIsPriorKey',
140+
'NSKeyValueChangeOldKey',
134141
'NSLocalizedDescriptionKey',
135142
};

pkgs/objective_c/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
## 8.1.0-wip
22

3+
- Support the KVO pattern by adding `Observer`, `Observation`, and
4+
`NSObject.addObserver`.
5+
36
## 8.0.0
47

58
- Use ffigen 19.0.0

pkgs/objective_c/ffigen_objc.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ headers:
1010
- 'src/foundation.h'
1111
- 'src/input_stream_adapter.h'
1212
- 'src/ns_number.h'
13+
- 'src/observer.h'
1314
- 'src/protocol.h'
1415
ffi-native:
1516
exclude-all-by-default: true
@@ -26,6 +27,7 @@ objc-interfaces:
2627
# Keep in sync with ffigen's ObjCBuiltInFunctions.builtInInterfaces.
2728
include:
2829
- DOBJCDartInputStreamAdapter
30+
- DOBJCObservation
2931
- DOBJCDartProtocolBuilder
3032
- DOBJCDartProtocol
3133
- NSArray
@@ -84,6 +86,7 @@ objc-protocols:
8486
- NSPortDelegate
8587
- NSSecureCoding
8688
- NSStreamDelegate
89+
- Observer
8790
rename:
8891
'NSObject': 'NSObjectProtocol'
8992
objc-categories:
@@ -157,6 +160,11 @@ enums:
157160
- NSURLHandleStatus
158161
globals:
159162
include:
163+
- NSKeyValueChangeIndexesKey
164+
- NSKeyValueChangeKindKey
165+
- NSKeyValueChangeNewKey
166+
- NSKeyValueChangeNotificationIsPriorKey
167+
- NSKeyValueChangeOldKey
160168
- NSLocalizedDescriptionKey
161169
typedefs:
162170
include:

pkgs/objective_c/ios/Classes/objective_c.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77
#include "../../src/input_stream_adapter.m"
88
#include "../../src/objective_c.m"
99
#include "../../src/objective_c_bindings_generated.m"
10+
#include "../../src/observer.m"
1011
#include "../../src/protocol.m"

pkgs/objective_c/lib/objective_c.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export 'src/ns_mutable_data.dart';
2929
export 'src/ns_number.dart';
3030
export 'src/ns_string.dart';
3131
export 'src/objective_c_bindings_exported.dart';
32+
export 'src/observer.dart';
3233
export 'src/os_version.dart';
3334
export 'src/protocol_builder.dart';
3435
export 'src/selector.dart';

pkgs/objective_c/lib/src/objective_c_bindings_exported.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ export 'objective_c_bindings_generated.dart'
6161
NSItemProviderRepresentationVisibility,
6262
NSItemProviderWriting,
6363
NSKeyValueChange,
64+
NSKeyValueChangeIndexesKey,
65+
NSKeyValueChangeKindKey,
66+
NSKeyValueChangeNewKey,
67+
NSKeyValueChangeNotificationIsPriorKey,
68+
NSKeyValueChangeOldKey,
6469
NSKeyValueObservingOptions,
6570
NSKeyValueSetMutationKind,
6671
NSLinguisticTaggerOptions,
@@ -115,5 +120,6 @@ export 'objective_c_bindings_generated.dart'
115120
NSURLHandleStatus,
116121
NSValue,
117122
NSZone,
123+
Observer,
118124
OpaqueAEDataStorageType,
119125
Protocol;

0 commit comments

Comments
 (0)